ホームページ > バックエンド開発 > C++ > 「Async」と「待ち望」は、C#で非同期プログラミングを単純化するのですか?

「Async」と「待ち望」は、C#で非同期プログラミングを単純化するのですか?

Linda Hamilton
リリース: 2025-02-02 18:52:35
オリジナル
249 人が閲覧しました

How Do `async` and `await` Simplify Asynchronous Programming in C#?

c#非同期プログラミング

および:非同期操作を簡素化asyncawait 非同期プログラミングにより、メインスレッドをブロックせずにコードを同時に実行できます。

およびキーワードは、非同期操作の書き込みと理解を簡素化します。

asyncバックグラウンドスレッドと比較してawait

独立した従来の背景スレッドとは異なり、およびは、バックグラウンドのコンパイラによって生成された

ステートマシン

を使用します。非同期操作を追跡するこの状態マシンの進行により、バックグラウンド操作が完了したときにメインスレッドが実行され続けることができます。 async await例の詳細 例では、この例では、非同期操作が含まれているため、このメソッドは

としてマークされています。 DosomethingAsyncがバックグラウンドで実行されると(特定のスレッドはスレッドプールの構成に依存します)、UIスレッドは応答を維持し、ユーザーはアプリケーションと対話し続けることができます。

このコード行は、dosomethingasyncとメインスレッドが結果を受け取った後に実行された後に完了します。これは、非同期操作が完了した後にのみ後のコードが実行されることを意味します。

and関数の分解async

次の例では、

およびint a = 1;awaitを使用して実行プロセスをさらに示しています。 await

myMethodasyncは、バックグラウンドでlongrunningoperationAsyncの実行と開始を開始します。 asyncメインスレッドは独立して実行され、LongrunningOperationAsyncはバックグラウンドで実行されます。 await LongRunningOperationAsyncが完了すると、メインスレッドが再開され、割り込みから継続されます。

コンピューティング文字の結果は、longrunningOperationAsyncの結果を取得し、可変asyncに保存します。 await

メインスレッドは引き続き実行され、非同期操作から得られた結果を使用します。
<code class="language-csharp">public async Task MyMethodAsync()
{
    Task<int> longRunningTask = LongRunningOperationAsync();
    // 这里可以执行其他独立的工作
    int result = await longRunningTask;
    // 这里使用result
}

public async Task<int> LongRunningOperationAsync()
{
    await Task.Delay(1000);
    return 1;
}</code>
ログイン後にコピー

    以上が「Async」と「待ち望」は、C#で非同期プログラミングを単純化するのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート