gpt4 book ai didi

c# - Task.WaitAll 不等待子任务?

转载 作者:太空狗 更新时间:2023-10-29 22:23:40 25 4
gpt4 key购买 nike

您好,我将 _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);

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

最佳答案

我认为您将任务分配为:

Tasks[] tasks = new Task[ _noOfThreads];

将您的代码更改为:

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);

试试吧!祝你好运:)

关于c# - Task.WaitAll 不等待子任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10720760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com