Tôi đang cố gắng đầu tiên với các nhiệm vụ mới, nhưng có điều gì đó đang xảy ra mà tôi không hiểu.Bắt đầu công việc Trong foreach Sử dụng vòng lặp Giá trị của khoản mục cuối
Đầu tiên, mã, khá thẳng về phía trước. Tôi vượt qua trong một danh sách các đường dẫn đến một số tập tin hình ảnh, và cố gắng thêm một nhiệm vụ để xử lý mỗi trong số họ:
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;
}
tôi đã tìm thấy rằng nếu tôi cứ để chạy này với, chẳng hạn, một danh sách của 3 đường dẫn trong một thử nghiệm đơn vị, tất cả ba nhiệm vụ sử dụng đường dẫn cuối cùng trong danh sách được cung cấp. Nếu tôi bước qua (và làm chậm quá trình xử lý vòng lặp), mỗi đường dẫn từ vòng lặp được sử dụng.
Ai đó có thể giải thích điều gì đang xảy ra và tại sao? Cách giải quyết có thể?
Có thể tôi đề nghị sử dụng ReSharper này lỗi cụ thể và lỗi tiềm năng khác đang highlighten cho bạn –