假设我有一个不是异步的方法,但是返回一个任务(因为定义是来自也用于异步实现的接口)
- 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.
解决方法
你不能返回Task.Yield(),它不是一个任务,而是用于等待的YieldAwaitable,它实际上引入了异步(我发布了大约
more details here).
为此,我使用Task.FromResult(Type.Missing).也许,最有效的,尽管没有文档的选项是Task.Delay(0),it returns a static completed task.