1

我有一个简单的集合,我正在这样循环:

foreach (MyObject mo in myObjects)
{
   myObject.RunAcync();
}

RunAsync在单独的线程中执行代码,使用new Thread(()=>{ .. }).Start(),我无权更改RunAsync. 我需要将myObject并发运行的实例数限制为 N(实数为 2..10)。使用.NET4and的有效方法是什么c#

4

1 回答 1

0

如果您可以RunAsync使用我们现在拥有的(.NET 4)和即将到来的(现在考虑一下,.NET 4.5)来修改 .NET,我会使用任务并行库(TPL)并TaskRunAsync. 然后,您可以轻松分辨已完成和正在运行的内容,并使用内置的 TPL 负载平衡来限制正在运行的任务数量。或者,如果您有该方法的非异步版本,您也可以使用 TPL 的Parallel.ForEach来调用该方法,它将处理负载平衡并一次只运行足够的方法以避免性能问题

于 2012-09-10T13:38:57.653 回答