c# - .Result 或在 Task.WhenAll 之后等待

标签 c# asynchronous task

<分区>

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

等待 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并且 .Result 版本 jit 有点小。

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

最佳答案

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

如果所有任务都返回相同的结果,Task.WhenAll返回一个包含结果的数组:

var results=await Task.WhenAll(tasks);

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

关于c# - .Result 或在 Task.WhenAll 之后等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64268249/

相关文章:

c# - 来自单声道的奇怪的未处理异常

c# - 在viewmodel的构造函数中调用async方法加载数据有警告

linux - 尝试使用 "current"宏时出现编译错误

javascript - 使用 Gulp 复制文件目录和文件

c# - 从任务中调用函数

c# - ASP.NET Core2.2 中使用 CancellationToken 取消内部任务

c# - 从网络外的本地计算机确定用户 Active Directory 组

c# - Unity 2D - 放大 = ok,缩小 = borked

java - 如何异步验证 Nymi band?

c# - 单元测试和多个异步任务