我应该避免'async void'事件处理程序吗?
我知道使用fire-and-forget 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 cancellationprivate void Form_Load(object sender, System.EventArgs e){
this.onFormLoadTask = OnFormLoadTaskAsync(sender, e);} private async Task OnFormLoadTaskAsync(object sender, System.EventArgs e){
await Task.Delay(2000); // do async work
// ...}除了可能的重入之外,异步事件处理程序的水下岩石是什么?
千万里不及你
慕标琳琳
慕神8447489
随时随地看视频慕课网APP