ホームページ >バックエンド開発 >C++ >C#コンソールアプリケーションに非同期プログラミングを実装するにはどうすればよいですか?

C#コンソールアプリケーションに非同期プログラミングを実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-02-01 17:06:09245ブラウズ

How Can I Implement Asynchronous Programming in C# Console Applications?

c#コンソールアプリケーション非同期プログラミング:理解

modifier asyncを理解する 非同期プログラミングでは、

モディファイア表現法は他のコードと同時に実行されます。ただし、コンソールアプリケーションでは、

メソッドをasyncとして定義することはできません。これは、プログラムを非同期にしたい開発者に課題をもたらします。 Main asyncこの記事では、この問題について詳しく説明し、コンソールアプリケーションで非同期行動を達成する代替方法について説明します。

Visual Studio 2012では、メソッドはasyncとして禁止されています。ただし、Visual Studio 2017 Update 3(15.3)以降では、またはの場合、言語は

メソッドをサポートするようになりました。これにより、開発者は次のコードを作成できます Main asyncこの方法は、Taskの使用と同様に、メインスレッドをブロックしているようです。ただし、C#7.1の公用語の仕様の前に、この動作は依然として仮説です。 Task<T> async非同期コンソールアプリケーションの代替方法Mainメソッドが実行不可能な場合、開発者は次の代替方法のいずれかを採用できます。

<code class="language-csharp">class Program
{
    static async Task Main(string[] args)
    {
        Bootstrapper bs = new Bootstrapper();
        var list = await bs.GetList();
    }
}</code>
カスタマイズされたコンテキスト:

コンソールアプリケーションに互換性のあるカスタマイズされた「メインループ」を作成します。このサイクルは、非同期方法の容器として機能します。 GetAwaiter().GetResult()

メインスレッドをオブロックします:

非同期作業が完了する前にメインコンソールスレッドを妨害します。これは、次の方法で実装できます

または

の代わりに、開発者はこれらのメソッドを使用するときに発生するasyncパッケージを回避できます。 Main 要するに、 メソッドが適切でない場合には適していません。特定の実装では。

    以上がC#コンソールアプリケーションに非同期プログラミングを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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