首頁 >後端開發 >C++ >如何在 C# 的 Main 方法中正確呼叫非同步方法?

如何在 C# 的 Main 方法中正確呼叫非同步方法?

DDD
DDD原創
2024-12-29 15:41:13294瀏覽

How Do I Properly Invoke Async Methods from the Main Method in C#?

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

在非同步程式設計領域,遇到需要呼叫非同步方法的情況並不少見直接從Main 方法呼叫非同步方法。了解如何實現這一點對於利用非同步程式設計的優勢至關重要。

Main 中的非同步方法呼叫

考慮以下程式碼片段:

<br>公開課test<br>{<pre class="brush:php;toolbar:false">public async Task Go()
{
    await PrintAnswerToLife();
    Console.WriteLine("done");
}

public async Task PrintAnswerToLife()
{
    int answer = await GetAnswerToLife();
    Console.WriteLine(answer);
}

public async Task<int> GetAnswerToLife()
{
    await Task.Delay(5000);
    int answer = 21 * 2;
    return answer;
}

}

多種方法

多種方法

多種方法


多種方法

test t = new test();
await t.Go();
Console.WriteLine("finished");
Console.ReadKey();

多種方法

呼叫非同步有多種方法Main方法中的方法:

1.非同步Main 方法(C# 7.1 及更高版本)

對於C# 7.1 及更高版本,Main 方法可以標記為非同步。這使得可以在 Main 方法中直接使用非同步方法,如以下範例所示:

static async Task Main(string[] args)<pre class="brush:php;toolbar:false">test t = new test();
t.Go().Wait();
Console.WriteLine("finished");
Console.ReadKey();
{


}

2.呼叫「Wait」方法

2.呼叫「Wait」方法對早期版本的C#,Wait 方法可用於阻塞線程,直到非同步方法完成。此方法如下:

static void Main(string[] args)<p>{<strong></strong></p>}<p></p>
3。 OnCompleted 回呼(傳統方法)在某些情況下,您可能需要使用 OnCompleted 回調,如初始程式碼片段所示。但是,這種方法可能會導致死鎖,應盡可能避免。 最佳方法對於C# 7.1 及更高版本,首選使用非同步Main 方法方法,因為它簡化了程式碼並消除了基於回呼的呼叫的需要。對於早期版本的 C#,可以使用 Wait 方法,但請務必注意與阻塞執行緒相關的潛在效能影響。 結論呼叫非同步方法從Main方法中可以透過各種技術來實現。透過了解不同的方法及其意義,您可以根據您的特定需求和您使用的 C# 版本選擇最佳解決方案。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn