我想在循環內部實現一個嵌套的任務 - 這是我迄今爲止的模式,但我很不確定,因爲這是我第一次使用並行任務庫。嵌套任務循環內
父級(層)任務應等待子節點(節點)任務完成。
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