首頁 > 後端開發 > C++ > 主體

C# |使用 [async | 非同步程式設計]等待|任務]

WBOY
發布: 2024-07-23 21:49:44
原創
869 人瀏覽過

C# | Asynchronous programming with [async | await | Task]

Note
You can check other posts on my personal website: https://hbolajraf.net

在 C 中使用等待和非同步任務

在 C# 中,非同步程式設計用於透過允許任務並發運行而不阻塞主執行緒來提高應用程式的回應能力。 wait 和 async 關鍵字在實現這一目標方面發揮著至關重要的作用。本指南將向您展示如何有效地使用await和async Task。

介紹

C# 中的非同步程式設計對於可能需要大量時間的任務(例如 I/O 密集型操作或網路請求)至關重要。透過使用await和async,您可以確保您的應用程式在等待這些任務完成時保持回應。

使用非同步任務

  1. 定義非同步方法:若要使用await,請在類別中定義非同步方法,通常會傳回Task 或Task
   public async Task MyAsyncMethod()
   {
       // Asynchronous code here
   }
登入後複製
  1. 呼叫非同步方法:在另一種方法中,您可以使用await關鍵字呼叫非同步方法。
   await MyAsyncMethod();
登入後複製

等待關鍵字

await 關鍵字在非同步方法中使用來暫停執行,直到等待的任務完成。它允許調用線程繼續其他工作而不會阻塞。

async Task MyAsyncMethod()
{
    var result = await SomeAsyncTask();
    // Code after the await will execute when SomeAsyncTask is completed.
}
登入後複製

例外處理

要處理非同步方法中的異常,您可以使用標準的 try-catch 區塊。當非同步方法中引發異常時,它會被捕獲並作為任務的一部分傳播。

try
{
    await SomeAsyncMethod();
}
catch (Exception ex)
{
    // Handle the exception
}
登入後複製

取消令牌

要取消非同步操作,可以使用 CancellationToken。將 CancellationToken 傳遞給非同步方法,並在方法內檢查取消。

async Task MyAsyncMethod(CancellationToken cancellationToken)
{
    // Check for cancellation
    cancellationToken.ThrowIfCancellationRequested();

    // Continue with the operation
}
登入後複製

現實世界的例子

這是一個常見的現實場景的範例:非同步發出 HTTP 請求。

public async Task<string> FetchDataAsync(string url)
{
    using (var httpClient = new HttpClient())
    {
        var response = await httpClient.GetAsync(url);
        response.EnsureSuccessStatusCode();
        return await response.Content.ReadAsStringAsync();
    }
}
登入後複製

接下來做什麼?

在 C# 中使用 wait 和 async Task 可以讓您編寫響應靈敏且高效的應用程序,特別是在處理 I/O 密集型或長時間運行的任務時。它允許您同時運行多個任務而不阻塞主線程,從而使您的應用程式保持響應並改善整體用戶體驗。

以上是C# |使用 [async | 非同步程式設計]等待|任務]的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板