我想在循环内部实现一个嵌套的任务 - 这是我迄今为止的模式,但我很不确定,因为这是我第一次使用并行任务库。嵌套任务循环内
父级(层)任务应等待子节点(节点)任务完成。
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秒,在此之后,如果没有收到有效的回复,它也应该终止。
这是否合乎逻辑?
老实说,你只是在等待最后的结果并返回。你真的想做什么? – flindeberg
请问您可以添加更多的细节。 tierNodes是您父节点还是子节点的共享?你如何从父节点获取子节点。我无法在代码中看到任何父母子女关系。多一点信息会有帮助 – Anand
@Anand - 增加更多细节。 – dotnetnoob