以Task为返回类型的非异步方法返回什么
本文关键字:异步方法 返回 什么 Task 返回类型 | 更新日期: 2023-09-27 18:02:36
假设我有一个方法,它不是异步的,但返回一个Task
(因为定义来自一个同样用于异步实现的接口)
public Task DoWorkAsync(Guid id)
{
// do the work
return ...;
}
返回的最佳对象是什么?我的当前选项:
return Task.Yield();
return Task.FromResult<object>(null);
// any of the other but cached in a static field and reused.
在Microsoft.net 4.6中,Task类有一个用于此目的的静态属性。
任务。CompletedTask
https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.completedtask (v = vs.110) . aspx
你不能返回Task.Yield()
,它不是Task
,而是YieldAwaitable
用于await
,它实际上引入了异步(我在这里发布了一些更多的细节)。
我使用Task.FromResult(Type.Missing)
用于此目的。也许最有效的选项是Task.Delay(0)
,它返回一个静态完成的任务。