ホームページ >バックエンド開発 >C++ >C# で同期 Main メソッドから非同期メソッドを呼び出すにはどうすればよいですか?

C# で同期 Main メソッドから非同期メソッドを呼び出すにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-31 02:29:08945ブラウズ

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

メインからの非同期メソッドの呼び出し: 総合ガイド

はじめに

次のような場合に疑問が生じます。開発者は、次のような従来の同期コンテキストから非同期メソッドを呼び出す必要があります。メインメソッド。この状況は、C# で非同期プログラミングの領域を探索しているときによく発生します。

問題

次の非同期メソッドがあるとします。

public class test
{
    public async Task Go()
    {
        // ... various async operations
    }
}

プログラムの同期エントリである Main メソッドから Go を呼び出そうとするとジレンマが発生しますpoint.

解決策

C# 7.1 以降のバージョンでは、Main から非同期メソッドを呼び出すのは簡単です。

static async Task Main(string[] args)
{
    test t = new test();
    await t.Go();
    Console.WriteLine("finished");
    Console.ReadKey();
}

このコードは、次のことを保証します。 Go の非同期操作は、プログラムが終了する前に完了します。

以前の C# バージョンの場合7.1 では、別のアプローチが必要です。

static void Main(string[] args)
{
    test t = new test();
    t.Go().Wait();
    Console.WriteLine("finished");
    Console.ReadKey();
}

Wait() を呼び出すと、Go の非同期操作が完了するまで現在のスレッドがブロックされます。

非同期メソッドの利点

コードが複雑になり保守が難しくなる可能性があるコールバックを排除できることは、 async キーワードを使用した非同期プログラミング。これにより、他の操作を並行して進めながら、クリーンで順次的な実行フローが可能になります。

以上がC# で同期 Main メソッドから非同期メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。