使用TPL,我有多個任務設置(動態創建,可能是一個大數目),每個返回一個BOOL,我想檢查是否所有的任務返回值是真實的。我將如何做到這一點?可能嗎?如果沒有,是否有可能將共享對象傳遞給每個任務並讓任務更新此對象?你如何評估多任務的結果
編輯:這將是我的任務的一個例子。 ProcessEntity返回一個布爾值。現在我有多個創建和執行的任務。我需要檢查所有結果是否屬實。
private Task<bool> CreateTask(MyEntity entity, Action onStart, Action onComplete)
{
return (new Task<bool>(
() =>
{
onStart.Invoke();
var result = false;
try
{
result = ProcessEntity(myEntity);
}
catch (Exception ex)
{
}
onComplete.Invoke();
return result;
})
);
}
for (int i = 0; i < counter; i++)
{
CreateTask(entities[i],() => _taskCounter++,() => _taskCounter--).Start();
}
所以在這一點上,我需要繼續執行其他代碼,並且只有當所有任務都返回true時纔會發生。
所有這些都是可能的。如果您向我們展示您的代碼以及您嘗試過的方法無效,那麼幫助起來會更容易。 –
[限制TPL任務數量]的重複(http://stackoverflow.com/questions/16012096/limit-number-of-tasks-with-tpl)這似乎是大約相同的問題。而不是創造新的問題來修改當前。你有幾個特定的請求。 – Paparazzi
你想同步等待'任務'完成或異步執行嗎?另外,如果某些「任務」失敗會發生什麼? – svick