非同期メソッドで
Task
の間で選択void
を選択します
>メソッドからa Task
またはvoid
を返すかどうかの決定は、コンテキスト依存です。 この選択は、非同期操作の処理方法と呼び出しコードとの相互作用に大きく影響します。
async
: Task
を返します
a
Task
Task
オブジェクトは、操作のステータスを追跡するためのプロパティと方法を提供します(Task
メソッド内でスローされた例外はIsCompleted
によってキャプチャされ、IsFaulted
ブロックを使用して発信者が適切に処理できます。
async
Task
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 サイトの他の関連記事を参照してください。