【发布时间】:2020-10-08 18:03:01
【问题描述】:
我有两个任务,我等待它们完成
await Task.WhenAll
之后直接调用.Result获取值会不会有问题
我确定任务已经完成了。
`
Task<int> t1 = Task.FromResult(1);
Task<int> t2 = Task.FromResult(2);
await Task.WhenAll(t1, t2);
var uuu = t1.Result;
// or var uuu = await t1;
`
问题在于 Visual Studio 设置了 VSTHRD103 Call async methods when in an async method 警告。
我检查了sharplab,结果版本 jit 有点小。
如果我调用.Result 之后我已经用Task.WhenAll 等待他们,我会遇到任何僵局吗?
【问题讨论】:
-
你不应该使用Task.Result。这是不好的做法。
-
@NolanBradshaw 除非在这种情况下,当任务已经完成
-
@PanagiotisKanavos 正确,错过了 Task.WhenAll() 的等待。谢谢指正。
标签: c# asynchronous task