Я делаю первую попытку играть с новыми Задачами, но что-то происходит, что я не понимаю.
Во-первых, код, который довольно прямолинейный. Я передаю список путей к некоторым файлам изображений и попытаюсь добавить задачу для обработки каждого из них:
public Boolean AddPictures(IList<string> paths)
{
Boolean result = (paths.Count > 0);
List<Task> tasks = new List<Task>(paths.Count);
foreach (string path in paths)
{
var task = Task.Factory.StartNew(() =>
{
Boolean taskResult = ProcessPicture(path);
return taskResult;
});
task.ContinueWith(t => result &= t.Result);
tasks.Add(task);
}
Task.WaitAll(tasks.ToArray());
return result;
}
Я обнаружил, что если я просто позволю этому запустить, скажем, список из трех путей в unit test, все три задачи используют последний путь в указанном списке. Если я пройду (и замедляю обработку цикла), используется каждый путь из цикла.
Может кто-нибудь объяснить, что происходит, и почему? Возможные обходные пути?