Lazimnya, kaedah kekosongan tak segerak (api-dan-lupa) dianggap amalan buruk kerana kekurangan pengendalian ralat dan mekanisme penjejakan tugas yang belum selesai. Walau bagaimanapun, bagi pengendali acara tak segerak, garis panduannya berbeza sedikit.
Bertentangan dengan nasihat umum, menggunakan async void dalam pengendali acara dianggap boleh diterima. Pengecualian ini timbul daripada sifat pengendalian acara:
Walaupun menggunakan async void dalam pengendali acara boleh diterima, anda perlu mengetahui potensi isu berikut:
Untuk ujian unit, pertimbangkan untuk mengekstrak logik tak segerak daripada pengendali peristiwa ke dalam kaedah yang berasingan, seperti ini:
<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>
Pendekatan ini membolehkan ujian dan pembatalan tugas tak segerak lebih mudah dalam pengendali acara tanpa mengorbankan kemudahan menggunakan async void.
Atas ialah kandungan terperinci Pengendali Acara Async Void: Bilakah ia Boleh Diterima?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!