Podejmuję pierwszą próbę gry z nowymi zadaniami, ale coś się dzieje, czego nie rozumiem.Uruchamianie zadań w foreach Wykorzystanie pętli Wartość ostatniej pozycji
Najpierw kod, który jest dość prosty. Mijam na liście ścieżek dostępu do niektórych plików graficznych i próbować dodać zadanie do przetwarzania każdego z nich:
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;
}
Odkryłam, że jeśli po prostu niech to bieg z, powiedzmy, Lista 3 ścieżki w teście jednostkowym, wszystkie trzy zadania wykorzystują ostatnią ścieżkę na podanej liście. Jeśli przejdę (i spowolnić przetwarzanie pętli), używana jest każda ścieżka z pętli.
Czy ktoś może wyjaśnić, co się dzieje i dlaczego? Możliwe rozwiązania?
Mogę zaproponować użyciu ReSharper Ten szczególny błąd i inne potencjalne błędy są highlighten dla Ciebie –