c# – 在foreach循环中创建任务
发布时间:2020-12-15 18:00:04 所属栏目:百科 来源:网络整理
导读:我有一个典型的foreach循环,它调用一个方法,其中参数是我们循环的集合的一个元素;这样的事情: foreach (byte x in SomeCollection){ SomeMethod(x);} 问题是SomeMethod需要很长时间才能运行.我想将调用移动到一个新任务,以便循环只创建任务,然后调用循环的
我有一个典型的foreach循环,它调用一个方法,其中参数是我们循环的集合的一个元素;这样的事情:
foreach (byte x in SomeCollection) { SomeMethod(x); } 问题是SomeMethod需要很长时间才能运行.我想将调用移动到一个新任务,以便循环只创建任务,然后调用循环的线程继续.我如何以线程安全的方式执行此操作? 谢谢. 编辑: 解决方法
一种方法是使用
Parallel.ForEach 来做到这一点:
Parallel.ForEach(SomeCollection,x => SomeMethod(x)); 在继续之前,代码将等待SomeMethod的所有调用完成,但各个调用可以并行运行. 如果您不想等待完成的调用,请将此调用包装在StartNew中: Task.Factory.StartNew(() => Parallel.ForEach(SomeCollection,x => SomeMethod(x))); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |