Prosedur Pengendalian Acara Asynchronous: Dalam Perbincangan -Depth
Gunakan async void
"melupakan" dielakkan, persoalannya ialah: Adakah prosedur pemprosesan acara yang tidak segerak juga dielakkan? async void
void
Pertimbangkan serpihan kod berikut:
sebagai alternatif, anda boleh memilih kaedah yang lebih berstruktur:
<code class="language-csharp">private async void Form_Load(object sender, System.EventArgs e) { await Task.Delay(2000); // 执行异步操作 // ... }</code>
Sebagai tambahan kepada masalah yang berpotensi, apa yang lain perangkap tersembunyi ada dalam penggunaan peristiwa tak segerak?
<code class="language-csharp">Task onFormLoadTask = null; private 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); // 执行异步操作 // ... }</code>
panduan dan potensi risiko Mengejutkan, garis panduan umum disyorkan untuk menggunakan
dalam prosedur pemprosesan acara, yang menjadikannya pengecualian kepada peraturan "🎜>". Ini kerana:
async void
Jika keabnormalan berlaku dalam program pemprosesan peristiwa tak segerak, mereka secara automatik akan menyebar ke program pemprosesan yang tidak normal dari benang UI, yang lebih mudah untuk menangani mereka. async void
Pembacaan kod
: dengan memisahkan logik kod asynchronous dari pemprosesan peristiwa, kebolehbacaan kod dapat ditingkatkan.Atas ialah kandungan terperinci Pengendali Acara Async: Menggunakan `Async void` atau tidak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!