コンテキストの理解:
C# の非同期メソッドは返すことができますタスクまたは無効のいずれか。 async void メソッドは特定のシナリオでは便利であるように見えますが、一般的には推奨されない潜在的な欠点が生じます。 async void が悪い習慣であると考えられる理由と、これらの状況に効果的に対処する方法を見てみましょう。
async void を避ける理由:
代替アプローチ:
結果を待たずにボタンのクリックに反応することに重点を置くこの例では、より適切なアプローチは、PrimeCustomTask メソッドを非同期タスクとして定義し、OnLoad メソッドを次のように利用することです。非同期操作を開始するためのエントリ ポイント。このようにして、async Task メソッドのすべての利点が維持されます。
protected override async void OnLoad(EventArgs e) { if (CustomTask == null) await PrimeCustomTask(); } private async Task PrimeCustomTask() { CustomTask = new TaskCompletionSource<int>(); while (CustomTask.Task.IsCompleted == false && IsDisposed == false) { // Wait for button click to set the value await Task.Delay(100); } int result = CustomTask.Task.Result; // Show the value if (result != 0) MessageBox.Show(result.ToString()); }
これらのガイドラインに従うことで、async void メソッドの落とし穴を回避し、コードの保守性、再利用性、テスト容易性を向上させることができます。
以上がC# で「async void」が悪い習慣になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。