c# – 从任务返回类型的非async方法返回什么?

前端之家收集整理的这篇文章主要介绍了c# – 从任务返回类型的非async方法返回什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个不是异步的方法,但是返回一个任务(因为定义是来自也用于异步实现的接口)
  1. public Task DoWorkAsync(Guid id)
  2. {
  3. // do the work
  4.  
  5. return ...;
  6. }

什么是最好的对象返回?我目前的选择:

  1. return Task.Yield();
  2. return Task.FromResult<object>(null);
  3.  
  4. // 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.

猜你在找的C#相关文章