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,执行后的下一行.如何更改此代码以等待子任务?
我认为您将任务分配为:
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)
试试看!祝好运 :)
| 归档时间: |
|
| 查看次数: |
3610 次 |
| 最近记录: |