通常情况下,异步 void 方法(fire-and-forget)由于缺乏错误处理和挂起任务跟踪机制而被认为是不良实践。然而,对于异步事件处理程序,指导原则略有不同。
与一般建议相反,在事件处理程序中使用 async void 被认为是可以接受的。这种例外源于事件处理的性质:
虽然在事件处理程序中使用 async void 是可以接受的,但需要注意以下潜在问题:
对于单元测试,请考虑将异步逻辑从事件处理程序中提取到单独的方法中,如下所示:
<code>public async Task OnFormLoadAsync(object sender, EventArgs e) { await Task.Delay(2000); ... } private async void Form_Load(object sender, EventArgs e) { await OnFormLoadAsync(sender, e); }</code>
这种方法允许更容易地测试和取消事件处理程序中的异步任务,而不会牺牲使用 async void 的便利性。
以上是异步空白事件处理程序:什么时候可以接受?的详细内容。更多信息请关注PHP中文网其他相关文章!