据我所知,在调用task.Result中的async方法可能会导致死锁.我对这个问题有不同的看法,但......
我发现自己做了很多这种模式.我有几个返回相同类型结果的任务,所以我可以一次等待它们.我想分开处理结果,但是:
Task<int> t1 = m1Async();
Task<int> t2 = m2Async();
await Task.WhenAll(t1, t2);
Run Code Online (Sandbox Code Playgroud)
可以打电话Result到这里,因为我知道任务现在已经完成了吗?
int result1 = t1.Result;
int result2 = t2.Result;
Run Code Online (Sandbox Code Playgroud)
或者,我应该使用await静止...它似乎是多余的,可能有点丑陋取决于我需要如何处理结果:
int result1 = await t1;
int result2 = await t2;
Run Code Online (Sandbox Code Playgroud)
更新:有人将我的问题标记为此问题的副本:等待具有不同结果的多个任务.问题是不同的,这就是为什么我没有在我的搜索中找到它,尽管其中一个详细的答案确实可以回答.