返回完成的Task
對象的最佳方法是什麼?返回完成的任務的最佳方式是什麼?
無論如何寫Task.Delay(0)
或Task.FromResult<bool>(true)
是可能的。
但是最有效的方法是什麼?從斯蒂芬Toub(MSFT)
返回完成的Task
對象的最佳方法是什麼?返回完成的任務的最佳方式是什麼?
無論如何寫Task.Delay(0)
或Task.FromResult<bool>(true)
是可能的。
但是最有效的方法是什麼?從斯蒂芬Toub(MSFT)
答:
如果你想每次新的任務對象,Task.FromResult是最有效的 。其當前實現中的Task.Delay(0)將返回一個 緩存的任務,但這是一個實現細節。如果你想使用 緩存的任務,你應該自己緩存一個,例如private static readonly任務s_completedTask = Task.FromResult(true);然後使用 s_completedTask。
Andrii時,通常的做法是,您能否給出鏈接以引用您Toub的陳述?谷歌不會返回任何結果搜索你的報價短語 – 2013-05-07 04:57:30
我直接問他,並在這裏張貼答案,因爲我認爲這是重要的 – Andrii 2013-09-10 07:59:50
Task.FromResult將是最直接的。它還包括一些常見整數的內置結果等。但是,如果您的價值不是「顯而易見」的價值(並且不會內置處理),但很可能會在您的情況下經常返回 - 那麼您可以創建自己的緩存結果到一個字段中(如果合適的話可能是靜態的) - 但是緩存任務非常重要,而不是結果本身。否則每次都使用Task.FromResult。
這是什麼原因?你不需要這個任務。只需調用該方法。 – I4V 2013-05-06 21:54:08
@ I4V當有時一個操作需要工作但有時它不是並且可以高效地完成而不需要異步 – 2013-05-06 21:58:19