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

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

问题描述:

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

无论如何写Task.Delay(0)Task.FromResult<bool>(true)是可能的。

但是最有效的方法是什么?从斯蒂芬Toub(MSFT)

+0

这是什么原因?你不需要这个任务。只需调用该方法。 – I4V 2013-05-06 21:54:08

+3

@ I4V当有时一个操作需要工作但有时它不是并且可以高效地完成而不需要异步 – 2013-05-06 21:58:19

答:

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

+0

Andrii时,通常的做法是,您能否给出链接以引用您Toub的陈述?谷歌不会返回任何结果搜索你的报价短语 – 2013-05-07 04:57:30

+0

我直接问他,并在这里张贴答案,因为我认为这是重要的 – Andrii 2013-09-10 07:59:50

Task.FromResult将是最直接的。它还包括一些常见整数的内置结果等。但是,如果您的价值不是“显而易见”的价值(并且不会内置处理),但很可能会在您的情况下经常返回 - 那么您可以创建自己的缓存结果到一个字段中(如果合适的话可能是静态的) - 但是缓存任务非常重要,而不是结果本身。否则每次都使用Task.FromResult。