【问题标题】:multiple asynchronous tasks finish one after another and allow user to do other work till get finished all tasks多个异步任务一个接一个完成,并允许用户做其他工作,直到完成所有任务
【发布时间】:2018-10-08 17:37:20
【问题描述】:

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

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

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

如果我使用 task[i].wait() 将不允许我的客户继续其他工作。在完成每项任务之前,客户不能做任何其他事情。

【问题讨论】:

    标签: wpf async-await task


    【解决方案1】:

    阻止 .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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多