4
我应该避免使用“异步无效”事件处理程序吗?
我知道使用即弃即用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, …