在.NET核心/ .NET标准中重用Task <T>

Fio*_*onn 6 .net c# .net-core .net-standard

是否可以重用使用Task.FromResult创建的相同Task <T>来实现即时返回方法(因为它已经完成了)?

我在这个问题背后的理由是减少由立即完成的异步接口的实现产生的垃圾(Task <bool>将是一个很好的例子,因为它只有两个可能的值).

基于这篇关于处理任务的文章,如果.NET Core的行为相同(是吗?),应该是可能的.

Mar*_*ell 7

是的,实际上强烈建议您使用可能同步知道的一小组可能结果(来自缓存等).同样,在Task(不Task<T>)的情况下,Task.CompletedTask可以使用.

请注意,如果您的大多数调用都是同步完成的,但您没有可能结果的小域,则可能需要考虑ValueTask<T>,这是针对此情况优化的.

这里的所有内容同样适用于.NET和.NET Core.