Task.WaitAll不等待子任务?

Tim*_*Tom 5 .net c# multithreading task-parallel-library c#-4.0

您好我有一次_noOfThreads定义的任务.因此,我继续使用%运算符继续执行任务,并在循环结束时使用Tasks.WaitAll.这是代码段.

for (int index = 0; index < count; index++)
{

                if (index < _noOfThreads)
                    tasks[index] = Task.Factory.StartNew(somedelegate);
                else
                    tasks[index % _noOfThreads].ContinueWith(task => { foo.bar(); }, 
                            TaskContinuationOptions.AttachedToParent);
 }
  Task.WaitAll(tasks);
Run Code Online (Sandbox Code Playgroud)

但是,我注意到它不等待子任务完成.父任务完成后Task.WaitAll,执行后的下一行.如何更改此代码以等待子任务?

TCM*_*TCM 8

我认为您将任务分配为:

Tasks[] tasks = new Task[ _noOfThreads];
Run Code Online (Sandbox Code Playgroud)

将您的代码更改为:

Tasks[] tasks = new Task[count];

for (int index = 0; index < count; index++)
{

    if (index < _noOfThreads)
         tasks[index] = Task.Factory.StartNew(somedelegate);
    else
         tasks[index] = tasks[index % _noOfThreads].ContinueWith(task => { foo.bar(); }, 
                            TaskContinuationOptions.AttachedToParent);
}
Task.WaitAll(tasks);
Run Code Online (Sandbox Code Playgroud)

试试看!祝好运 :)