理解Async/Await:何時使用Task.Run
在非同步程式設計領域,區分非同步方法(async)和非同步執行(後台線程)。為了深入研究細微差別,讓我們探討以下場景:
場景1:無後台執行緒
private async Task DoWork1Async() { int result = 1 + 2; }
在此範例中,該方法被標記為非同步,但執行不需要後台執行的簡單操作。因此,等待 DoWork1Async() 將同步執行。
場景 2:在後台執行緒上執行
private async Task DoWork2Async() { Task.Run( () => { int result = 1 + 2; }); }
這裡,該方法再次標記為非同步,但是它將實際操作包裝在 Task.Run 中。這確保操作在後台執行緒上執行。然而,等待 DoWork2Async() 仍將同步執行,因為後台執行緒操作未被等待。
方法回傳類型和異步步行為
a 的回傳類型方法也可以影響其異步行為。 返回任務或任務
Task.Run 非同步執行
要使方法可等待並在後台執行緒上執行其操作,我們應該使用Task.Run 建立一個新的task. 這種方法比將整個方法包裝在Task.Run中更合適,因為它允許我們在同步和非同步程式碼之間保持清晰的分離。
private Task<int> DoWorkAsync() // No async because the method does not need await { return Task.Run(() => { return 1 + 2; }); }
最佳實務
以上是我什麼時候應該將'Task.Run”與 Async/Await 一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!