我有Task<bool>
的List
,我要重複它,這取決於期待已久的結果,我決定是否繼續或中斷,但具有諷刺意味的foreach
剛剛執行的任務和等待關鍵字不起作用等待裏面的foreach關鍵詞,
這裏是我的代碼
private async void Execute(object sender, EventArgs e)
{
var tList = new List<Task<bool>> { Method1(), Method2()};
foreach (var task in tList)
{
var result = await task;
if(!result)
break;
}
}
public async Task<bool> Method1()
{
await Task.Delay(1000);
Console.WriteLine("Method1");
return false;
}
public async Task<bool> Method2()
{
await Task.Delay(1000);
Console.WriteLine("Method2");
return true;
}
結果:兩種功能都執行。
問題:我怎麼能在foreach
裏面等待?
和謝謝提前。
'Method1()'返回'true',所以我期待你的循環繼續。也就是說,這裏有一個基本問題:在啓動循環之前,您正在開始執行這兩項任務,因此即使第一個任務返回「false」,第二個任務也可能已經完成。你仍然會忽略任何進一步的*結果*,但你不一定會跳過這些結果的計算。 – dlev 2013-05-02 23:49:46
對不起**編輯它**具有相同的結果,並且如果返回false它應該會中斷。 – 2013-05-02 23:50:26