我正在尝试在循环中实现嵌套任务 - 这是我目前的模式,但我不确定,因为这是我第一次使用并行任务库。
父(层)任务应等待子(节点)任务完成。
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 秒,在此之后,如果没有收到有效响应,它也应该终止。
这看起来合乎逻辑吗?