Rumah > pembangunan bahagian belakang > C++ > Pengendali Acara Async: Menggunakan `Async void` atau tidak?

Pengendali Acara Async: Menggunakan `Async void` atau tidak?

Patricia Arquette
Lepaskan: 2025-01-26 02:41:07
asal
798 orang telah melayarinya

Async Event Handlers: To Use `async void` or Not?

Prosedur Pengendalian Acara Asynchronous: Dalam Perbincangan -Depth

Gunakan async void

Walaupun umumnya dipercayai bahawa kaedah

"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>
Salin selepas log masuk

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>
Salin selepas log masuk

panduan dan potensi risiko Mengejutkan, garis panduan umum disyorkan untuk menggunakan

dalam prosedur pemprosesan acara, yang menjadikannya pengecualian kepada peraturan "🎜>". Ini kerana:

Prosedur pemprosesan acara biasanya tidak dikenali untuk bertindak balas terhadap peristiwa tertentu, dan tidak mengambil bahagian dalam proses kawalan tradisional.

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

    Walau bagaimanapun, dalam beberapa kes, atas sebab -sebab berikut, logik prosedur pemprosesan peristiwa tak segerak mungkin lebih bermanfaat:
  • Ujian unit
  • : Ia memudahkan simulasi dan ujian berasingan fungsi teras program pemprosesan acara.

Pembacaan kod

: dengan memisahkan logik kod asynchronous dari pemprosesan peristiwa, kebolehbacaan kod dapat ditingkatkan.
  • Contoh:
  • Dengan mengikuti garis panduan ini, anda boleh menggunakan prosedur pemprosesan insiden yang tidak segerak sambil mengurangkan potensi risiko dan memastikan penyelenggaraan kod.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan