.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);
结果与产生它们的任务的顺序相同
我有两个任务,我正在等待它们完成
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);
结果与产生它们的任务的顺序相同