<code class=" language-csharp>await Task.Run(() => LongProcess()); </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><code class="language-csharp">await LongProcess();</code>
LongProcess
是使用 await ExecuteReaderAsync()
.
需要澄清的是,async
/await
本身並不會建立多個執行緒。 一個線程處理所有事情。
Async
/await
允許執行緒在等待非同步操作時執行其他任務。 想像一下,一位廚師在切蔬菜和檢查烤箱之間同時處理多項任務;線程類似地在任務之間切換,直到遇到 await
,然後恢復執行。
Task.Run
在啟動非同步操作而不立即等待其完成時很有價值。在非同步操作運行時保持對使用者輸入或其他任務的執行緒回應能力時,這是有利的。
在此範例中,兩種方法都會產生相同的結果。 await Task.Run(...)
在由 Task.Run
管理的單獨執行緒上執行非同步操作。然而,當前線程仍然等待完成,這使得它在功能上等同於直接等待 LongProcess
.
掌握 async
/await
的細微差別對於高效的非同步程式設計至關重要。 在這種特定情況下,await Task.Run(...)
和 await
都達到相同的結果。 最佳選擇取決於是否有必要在非同步操作期間保持當前執行緒的回應能力。
以上是Await Task.Run(() => ...) 與 Await LongProcess():什麼時候應該使用它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!