在.NET Core/.NET Standard中重复使用Task<T>

6

是否可以重复使用通过Task.FromResult创建的相同的Task<T>以用于立即返回的方法(因为它已经完成了)?

我提出此问题的原因是为了减少实现异步接口时产生的垃圾(例如,Task<bool> 就是一个很好的例子,因为它只有两个可能的值)。

根据这篇关于处理任务释放的文章,如果.NET Core的行为与之相同的话,那么重复使用同一任务应该是可能的。

1个回答

7

如果你有一小组可能已知同步的结果(从缓存等),强烈建议使用此方法。同样,在Task(而不是Task<T>)的情况下,可以使用Task.CompletedTask

请注意,如果大多数调用都是同步完成,但你没有一个小的可能结果域,你可能需要考虑使用ValueTask<T>,这种情况下进行了优化。

所有内容同样适用于.NET和.NET Core。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接