Task.Start/Wait 與 Async/Await:有何不同?
在非同步程式設計領域,理解使用 Task.Start/Wait 的同步方法和使用 Async/Await 的非同步方法之間的區別至關重要。
請看以下程式碼片段:
<code class="language-csharp">public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); }</code>
在第一個程式碼片段中,我們使用傳統的 Task.Start/Wait 同步方法。其工作原理如下:
相反,第二個程式碼片段示範了使用 Async/Await 的非同步方法:
這兩種方法的主要差異在於任務運行時執行緒的行為。使用 Task.Start/Wait,執行緒被阻塞,無法回應其他事件。相反,Async/Await 允許執行緒在等待回應時執行其他任務。
想像一下在餐廳點午餐。使用 Task.Start/Wait,就像在你用餐之前忽略坐在你旁邊的人一樣。使用 Async/Await,就像在你等待湯上桌時繼續與朋友交談一樣。後台的工作仍在進行,但你的執行緒在等待結果時可以執行其他操作。
以上是Task.Start/Wait 與 Async/Await:非同步程式設計的主要差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!