我需要在完成所有任务后执行完成的行。我认为Task.WaitAll(任务)将保持小心,但在执行回调方法后,我的完成行会被执行。是否有阻止主线程直到Task aray完成它。任务数组中的Task.wait
Taskpprcessor.Batchstart(定义)
public void BatchStart(List<TaskDefinition> definition)
{
int i = 0;
tasks = new Task[definition.Count];
definition.ForEach((a) =>
{
tasks[i] = Task<TaskResult>.Factory.StartNew(() => (TaskResult)a.MethodTocall.DynamicInvoke(a.ARguments));
tasks[i].ContinueWith(task => RunTaskRetObjResultIns((Task<TaskResult>)task, a.CompleteMethod));
i++;
});
Task.WaitAll(tasks);
Console.WriteLine("completed");
}
不要在闭包中增加外部变量。 IE,不要在闭包块外定义'i',然后在你的'foreach' lambda中增加它。这是一个有趣的方式来变得奇怪,很难调试错误。 – sircodesalot 2013-05-09 18:01:14