返回已完成任务的最佳方式是什么?

And*_*rii 4 .net c# task-parallel-library c#-5.0 .net-4.5

返回已完成Task对象的最佳方式是什么?

可以写Task.Delay(0),或者Task.FromResult<bool>(true)其他什么。

但最有效的方法是什么?

And*_*rii 5

Stephen Toub (MSFT) 的回答:

如果每次都想要一个新的 Task 对象,Task.FromResult 是最有效的。当前实现中的 Task.Delay(0) 将返回一个缓存的任务,但这是一个实现细节。如果你想使用缓存的任务,你应该自己缓存一个,例如 private static readonly Task s_completedTask = Task.FromResult(true); 然后使用 s_completedTask。