首頁 > 後端開發 > C++ > 如何在 C# 中從同步主方法呼叫非同步方法?

如何在 C# 中從同步主方法呼叫非同步方法?

DDD
發布: 2024-12-31 02:29:08
原創
941 人瀏覽過

How Do I Call an Async Method from a Synchronous Main Method in C#?

從Main 呼叫非同步方法:綜合指南

簡介

簡介

以下情況下會出現問題開發人員需要從傳統同步上下文(例如Main 方法)呼叫非同步方法。在探索 C# 中的非同步程式設計領域時,經常會出現這種情況。

問題
public class test
{
    public async Task Go()
    {
        // ... various async operations
    }
}
登入後複製

給出以下非同步方法:

當嘗試從程式的同步入口 Main 方法呼叫 Go時,就會出現困境

解決方案
static async Task Main(string[] args)
{
    test t = new test();
    await t.Go();
    Console.WriteLine("finished");
    Console.ReadKey();
}
登入後複製

在C# 7.1 及更高版本中,從Main 呼叫非同步方法非常簡單:

static void Main(string[] args)
{
    test t = new test();
    t.Go().Wait();
    Console.WriteLine("finished");
    Console.ReadKey();
}
登入後複製
此程式碼確保Go 的非同步操作在程式結束前完成。

對於 7.1 之前的 C# 版本,需要採取不同的方法:

呼叫 Wait() 會阻塞目前線程,直到 Go 的非同步操作結束。

非同步方法的好處消除回調是使用 async 關鍵字進行非同步程式設計的關鍵優勢,回調會使程式碼變得複雜且難以維護。它實現了乾淨且順序的執行流程,同時允許其他操作同時進行。

以上是如何在 C# 中從同步主方法呼叫非同步方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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