有人会指出我正确的方向设置异步任务吗?我有一个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问题中收集了很多这些问题,但我觉得我对此很满意。
答案 0 :(得分:3)
通过await
每次通话,您都在等待每个通话完成,然后开始下一个通话。
最后调用.Wait()
,无论如何都会冻结你的用户界面。
您想要await Task.WhenAll(x.LoadAsync(), y.LoadAsync(), ...)
。