ホームページ > バックエンド開発 > C++ > .NET 4.5 で 2 つの非同期タスクを同時に実行し、その結果を取得するにはどうすればよいですか?

.NET 4.5 で 2 つの非同期タスクを同時に実行し、その結果を取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-13 07:34:42
オリジナル
490 人が閲覧しました

How Can I Run Two Async Tasks Concurrently and Get Their Results in .NET 4.5?

.NET 4.5 での同時非同期タスクの効率的な実行と結果の取得

このガイドでは、.NET 4.5 フレームワーク内で 2 つの非同期タスクを同時に実行し、それぞれの結果を効率的に収集するための合理化された方法を示します。 Task.Run()Thread.Sleep() を使用した以前のアプローチは、非同期操作には理想的ではありません。

改善されたソリューションは次のとおりです:

<code class="language-csharp">async Task<int> LongTask1()
{
    // Simulate a long-running operation
    await Task.Delay(1000); // Replace with your actual asynchronous task
    return 0;
}

async Task<int> LongTask2()
{
    // Simulate a long-running operation
    await Task.Delay(1500); // Replace with your actual asynchronous task
    return 1;
}

// ... within your main method ...
{
    Task<int> task1 = LongTask1();
    Task<int> task2 = LongTask2();

    await Task.WhenAll(task1, task2);

    // Access results after both tasks have completed
    int result1 = task1.Result;
    int result2 = task2.Result;
    // ... process result1 and result2 ...
}</code>
ログイン後にコピー

この洗練されたコードは、async/await の機能を活用しています:

  • LongTask1LongTask2 は、長時間実行される操作を表す非同期メソッドです。 Task.Delay() を実際の非同期ロジックに置き換えることを忘れないでください。
  • Task.WhenAll(task1, task2) は、続行する前に両方のタスクが完了していることを確認し、結果を効果的に同期します。
  • task1.Resulttask2.Result は、各タスクの実行終了後に返された値へのアクセスを提供します。

このアプローチは、以前の方法と比較して、よりクリーンで効率的で真の非同期ソリューションを提供し、Task.Run()Thread.Sleep() のような非効率的なブロック呼び出しの必要性を排除します。 これは、.NET 4.5 で同時非同期タスクを処理するための推奨される方法です。

以上が.NET 4.5 で 2 つの非同期タスクを同時に実行し、その結果を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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