await Task.CompletedTask vs return
- 论坛
- await Task.CompletedTask vs return
27 浏览
await Task.CompletedTask vs return
我试图理解await Task.CompletedTask
和return
之间的区别,但似乎找不到明确的解释。
为什么/何时会使用这个:
public async Task Test() { await Task.CompletedTask; }
而不是这个?
public async Task Test() { return; }
据我理解,两者的status
都将设置为TaskStatus.RanToCompletion
,尽管根据来自Task.FromResult的解释,我有种感觉可能与物理时间或类似的东西有关:
当任务的返回值在不执行较长代码路径的情况下立即可知时,该方法通常被使用。
如果能清楚地解释一下这个问题,我会非常感激,因为我已经研究了GitHub上的MS代码、MS文档以及我能找到的所有链接,但没有地方给出明确的解释。我还在较大的方法末尾看到await Task.CompletedTask
,根据我在GitHub上的MS评论中找到的一些评论,这实际上是错误的,因为它不应该包含在其中,他们希望将其从存储库中清除。
如果还能对Task.FromResult
进行明确解释(因为它们是同级的),我也会非常感激,因为我对何时使用以下内容仍然不清楚:
public async TaskTest() { return await Task.FromResult(true); }
而不是这个:
public async TaskTest() { return true; }