设置异步任务

时间:2014-10-15 16:54:24

标签: c# asynchronous task

有人会指出我正确的方向设置异步任务吗?我有一个InitializeDatabases方法,其中包含以下任务:

    Task.Run(async () => 
        {
            await NContext.ZSA_TransactionHeader.LoadAsync();
            await NContext.ZSA_TransactionDetail.LoadAsync();
            await DContext.AR_MasterTable.LoadAsync();
            await DContext.IN_Master.LoadAsync();
            await DContext.SA_HistoryHeader.LoadAsync();
            await DContext.SA_HistoryDetail.LoadAsync();
            await DContext.SA_NonInvCode.LoadAsync();
            await DContext.SA_SalespCode.LoadAsync();
        }).Wait();

我的问题是任务执行但即使尚未完成加载也会继续。我需要它等待所有.LoadAsync任务完成。我还希望所有LoadAsync任务同时运行。我从其他SO问题中收集了很多这些问题,但我觉得我对此很满意。

1 个答案:

答案 0 :(得分:3)

通过await每次通话,您都在等待每个通话完成,然后开始下一个通话。

最后调用.Wait(),无论如何都会冻结你的用户界面。

您想要await Task.WhenAll(x.LoadAsync(), y.LoadAsync(), ...)