首頁 > 後端開發 > C++ > 如何在 C# 控制台應用程式中有效地使用 Async/Await?

如何在 C# 控制台應用程式中有效地使用 Async/Await?

Susan Sarandon
發布: 2025-01-05 15:15:39
原創
975 人瀏覽過

How Can I Effectively Use Async/Await in C# Console Applications?

C# 中控制台應用程式的非同步程式設計

在C# 程式設計領域,使用'async' 關鍵字的非同步程式設計模型提供了高效的透過在等待長時間運行的操作完成時避免線程阻塞來執行。然而,控制台應用程式在整合此模型時提出了挑戰。

非同步主函數的困境

在同步程式設計中,傳播「非同步」至關重要' 關鍵字貫穿整個呼叫堆疊,從入口點到非同步程式碼。然而,在控制台應用程式中,由於編譯錯誤,入口點(Main 函數)無法標記為非同步。

克服限制

主要有兩種方法要解決此限制:

1.阻止執行:

這涉及阻塞主線程,直到非同步操作完成。實現此目的的一種方法是在傳回的任務上利用「Wait」方法:

static void Main()
{
  MainAsync().Wait();
}
登入後複製

但是,這種方法可能會導致異常被包裝到 AggregateException 中。為了避免這種情況,請考慮使用GetAwaiter().GetResult() 方法:

static void Main()
{
  MainAsync().GetAwaiter().GetResult();
}
登入後複製

2.使用您自己的上下文:

或者,您使用您自己的上下文:

static void Main()
{
  AsyncContext.Run(() => MainAsync());
}
登入後複製

或者,您可以建立自訂非同步上下文來管理非同步執行。這允許您將入口點與非同步程式碼分開:

這種方法提供了一種強大的機制來處理控制台應用程式中的非同步操作。

以上是如何在 C# 控制台應用程式中有效地使用 Async/Await?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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