我有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