Do Work 方法中的非同步性:Task.Run 與非同步關鍵字
在非同步程式設計領域,非同步執行與非同步執行之間的區別可等待性可能是微妙的。讓我們深入研究 Task.Run 和 async 關鍵字的細節,並了解它們在創建同步或非同步執行的方法中的作用。
非同步執行:Task.Run
Task.Run 方法可讓您將程式碼的執行委託給後台執行緒。透過建立封裝程式碼的 Task 對象,Task.Run 可讓您非同步執行程式碼,而不會阻塞目前的執行路徑。但是,使用 Task.Run 並不一定會使方法可等待。
可等待性:非同步關鍵字
非同步方法是可以在等待時暫停和恢復的方法表達式。這允許方法將執行點傳回給呼叫線程而不會阻塞。宣告為非同步的方法可以傳回任務或任務
範例:不使用 Async/Await 執行
// Not async because it does not use await private Task<int> DoWorkAsync() { return Task.Run(() => { return 1 + 2; }); }
在此範例中,我們傳回一個 Task
範例:使用Await 進行非同步執行
private async Task<int> GetWebPageHtmlSizeAsync() { var client = new HttpClient(); var html = await client.GetAsync("http://www.example.com/"); return html.Length; }
在此範例中,方法被宣告為非同步並使用await 來暫停HttpClient.GetAsync 操作的執行。此方法將在下載網頁時傳回給呼叫者,然後在結果可用時恢復。
最佳實踐:
結論:
Task.Run 透過將程式碼委託給後台執行緒來促進非同步執行。 async 關鍵字支援可等待性,並允許方法暫停和恢復執行,從而提供創建響應迅速且高效的程式碼的靈活性。
以上是Task.Run 與 Async 關鍵字:何時使用每個關鍵字進行非同步操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!