为了账号安全,请及时绑定邮箱和手机立即绑定

在foreach循环中启动任务使用最后一项的值

在foreach循环中启动任务使用最后一项的值

C#
MM们 2019-12-13 13:10:05
我正在尝试使用新的任务,但是发生了一些我不了解的事情。首先是代码,这很简单。我传入了一些图像文件的路径列表,并尝试添加一个任务来处理每个图像文件: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;}我发现,如果让它与单元测试中的3条路径列表一起运行,那么所有这3个任务都将使用所提供列表中的最后一条路径。如果我单步执行(并减慢了循环的处理速度),则会使用循环中的每个路径。有人可以解释发生了什么,为什么?可能的解决方法?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 307 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信