多个异步任务一个接一个地完成,并允许用户做其他工作,直到完成所有任务

时间:2018-04-27 20:21:17

标签: wpf async-await task

我的应用程序是WPf,我们有数据服务。

我想调用异步数据服务任务来做一些工作并在完成后返回。当异步任务正在完成他的工作时,我的客户可以做其他工作。

但是当我想通过for循环调用10个相同的任务时,我想在另一个任务之后执行每个任务但不是并行。此外,我的客户可以继续其他工作,直到所有10个任务完成。

如果我使用task [i] .wait()将不允许我的客户继续其他工作。在完成每项任务之前,客户端无法执行任何其他操作。

1 个答案:

答案 0 :(得分:0)

阻止.Wait().Result之类的通话不会让UI继续

使用async / await,例如在按钮单击事件

public async void btn_Clicked(object sender, EventArgs args) {
    for (int i = 0; i < someParameter; i++) { 
        await importExportServiceClient.ClientEntryImportExportAsync(ImpExpobj, start, end, chunk);//for running task to finish 
    }
}

将依次等待每项任务,而不会阻止客户端。允许客户继续其他工作,直到完成所有任务。

参考Async/Await - Best Practices in Asynchronous Programming