4
「async void」イベントハンドラーを回避する必要がありますか?
async void保留中のタスクの追跡がなく、このようなメソッド内でスローされる可能性のある例外を処理するのが難しいため、タスクを開始するためにファイアアンドフォーゲットメソッドを使用することは、一般的に悪い考えと考えられます。 通常、async voidイベントハンドラーも回避する必要がありますか?例えば、 private async void Form_Load(object sender, System.EventArgs e) { await Task.Delay(2000); // do async work // ... } 次のように書き直すことができます。 Task onFormLoadTask = null; // track the task, can implement cancellation private void Form_Load(object sender, System.EventArgs e) { this.onFormLoadTask = OnFormLoadTaskAsync(sender, e); } private async Task OnFormLoadTaskAsync(object sender, …