ホームページ > バックエンド開発 > C++ > Async/await Methodのタスクとvoidをいつ返す必要がありますか?

Async/await Methodのタスクとvoidをいつ返す必要がありますか?

Barbara Streisand
リリース: 2025-02-01 14:01:09
オリジナル
460 人が閲覧しました

When Should I Return a Task vs. Void in Async/Await Methods?

非同期メソッドで

Taskの間で選択voidを選択します

c#の

>メソッドからa Taskまたはvoidを返すかどうかの決定は、コンテキスト依存です。 この選択は、非同期操作の処理方法と呼び出しコードとの相互作用に大きく影響します。 async

Taskを返します a

を返すことは、一般的に推奨されるアプローチです。 発信者が次のようになります

Task

結果を待っています:により、発信者はその完了を待ち、結果にアクセスできます。
  • モニターの進行状況:Taskオブジェクトは、操作のステータスを追跡するためのプロパティと方法を提供します(
  • )。 ハンドルの例外:Taskメソッド内でスローされた例外はIsCompletedによってキャプチャされ、IsFaultedブロックを使用して発信者が適切に処理できます。
  • 返品asyncTask try-catch
  • の返却は、主に次の場合に適切です

    void火災と焦点操作:非同期操作が開始され、発信者はその完了または潜在的なエラーについて知る必要はありません。 例には、イベントハンドラーまたはロギングアクションが含まれます

    void

    メソッド:注意:
    • メソッドには、独自の動作と潜在的な落とし穴があります:

    観測されていない例外:async voidメソッドの例外は、発信者に自動的に伝播されません。 ハンドルを解除した場合、彼らはイベントにつながり、潜在的にアプリケーションを静かにクラッシュさせる可能性があります。 これは、絶対に必要でない限りを回避する主な理由です。

    async void実例:

    • async voidの返却)が、より良いエラー処理と結果を待つ能力に適しています。 UnobservedTaskException(返信async void)は、メソッド自体内で明示的な例外処理の重要性を示しています。
    結論:

    ほとんどのメソッドでA

    を返すことをお勧めします。 リターン値が必要ないイベントハンドラーなどの特定のシナリオにのみ
    <code class="language-csharp">public static async Task<int> AsyncMethod1(int num)
    {
        await Task.Delay(num);
        return num * 2;
    }
    
    public static async void AsyncMethod2(int num)
    {
        try
        {
            await Task.Delay(num);
        }
        catch (Exception ex)
        {
            // Handle exceptions here.  Crucial for async void!
            Console.WriteLine($"Exception in AsyncMethod2: {ex.Message}");
        }
    }</code>
    ログイン後にコピー
    を使用し、メソッド内に慎重な例外処理が実装されます。 これらのガイドラインを無視すると、非同期コードで非難が困難な問題につながる可能性があります。 より詳細な説明については、外部リソースを参照してください

    以上がAsync/await Methodのタスクとvoidをいつ返す必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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