我正在尝试在循环内实现嵌套任务 - 这是我迄今为止所拥有的模式,但是我还不确定,因为这是我第一次使用并行任务库。
父(层)任务应等待子(节点)任务完成。
public int NestedTask(IEnumerable<MatchTier> tierNodes)
{
var tier = Task<int>.Factory.StartNew(() =>
{
Task<int> node = null;
foreach(var n in tierNodes)
{
node = Task<int>.Factory.StartNew(() =>
{
// Task logic goes here
return 1; // temp placeholder
});
// if a valid value is returned then exit this loop
}
return node.Result;
});
return tier.Result;
}
子节点循环直到返回第一个有效值,然后应退出循环,并将有效值传递给父节点。
子节点和父节点也都需要超时。每个子进程将被允许运行大约 3 秒,之后进程将超时并询问下一个节点。
父级的总体超时值约为 15 - 20 秒,在此之后,如果没有收到有效响应,它也应该终止。
这看起来符合逻辑吗?
最佳答案
等待任务完成
node.Wait();
等待任务直到一些蜱虫完成
node.Wait(timeToWait);
或者等待它们全部完成
Task.WaitAll(tasks);
你应该阅读here了解更多信息
关于c# - 循环内嵌套任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18460464/