【发布时间】:2014-12-08 21:20:57
【问题描述】:
我想尝试使用后台工作人员。我对使用async/await 很感兴趣。
我有 3 个并行任务。
private async void RunDownloadsAsync()
{
Task taskDelay1 = Task.Run(() => Task.Delay(10000));
Task taskDelay2 = Task.Run(() => Task.Delay(15000));
Task taskDelay3 = Task.Run(() => Task.Delay(20000));
await ???
}
假设这些任务中的每一个在完成后都会更改表单上 3 个标签(label1、label2、label3)的值。即所有标签都设置为“待处理”,当每个任务完成后,其对应的标签值将变为“已完成”。
我想await每个任务相应地让他们每个人都做自己相应的任务。这意味着如果taskDelay1 的工作已完成,则将label1 的文本设置为“已完成”,而taskDelay2 和taskDelay3 仍处于待处理状态。但是如果我把 3 awaits 放在那里,程序将等待它们全部完成任务,然后继续执行其余代码。
我怎样才能继续剩下的代码,其中每个标签只等待自己的任务完成,然后决定做什么?
【问题讨论】:
标签: c# asynchronous async-await