.Result 或在 Task.WhenAll 之后等待

.Result or await after Task.WhenAll

我有两个任务,我正在等待它们完成

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 有点小。

如果在我已经用 Task.WhenAll 等待他们之后调用 .Result,我会遇到任何死锁吗?

没问题,因为任务已经完成了。这是一个可以忽略的误报。

如果所有任务 return 虽然结果相同,但 Task.WhenAll returns 一个包含结果的数组:

var results=await Task.WhenAll(tasks);

结果与产生它们的任务的顺序相同