通常情況下,非同步 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中文網其他相關文章!