Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Harus Mengelakkan Kaedah Async Void dalam C#?

Mengapa Saya Harus Mengelakkan Kaedah Async Void dalam C#?

Mary-Kate Olsen
Lepaskan: 2024-12-31 06:07:08
asal
626 orang telah melayarinya

Why Should I Avoid Async Void Methods in C#?

Kesalahan Async Void: Penjelasan Terperinci

Kaedah Async void telah membuktikan diri mereka sebagai amalan yang lemah dalam pengekodan. Artikel ini menyelidiki dengan lebih mendalam mengapa sebenarnya ini berlaku, merujuk artikel terkenal "Mengelakkan Kekosongan Async."

Sebab Mengelakkan Kekosongan Async

  • Ralat Mengendalikan Percanggahan:
    Tidak seperti kaedah penyegerakan, async kaedah void mengendalikan pengecualian secara berbeza. Pengecualian yang berlaku dalam kaedah async void mungkin tidak merambat ke atas dan boleh mencabar untuk ditangkap.
  • Cabaran Komposisi:
    Kaedah async void menghalang organisasi kod dan penggunaan semula. Memandangkan kaedah ini tidak mengembalikan tugasan, ia menjadi sukar untuk menyusunnya menjadi aliran kerja tak segerak yang lebih besar.
  • Perjuangan Kebolehujian:
    Menguji kaedah async void adalah tugas untuk dirinya sendiri. Ia memerlukan perancangan yang teliti untuk memastikan liputan kod yang sesuai dan kemungkinan pengecualiannya.

Pertimbangan Tambahan

Kekosongan async dianggap sebagai anomali dalam alam async /menunggu bahasa. Kebanyakan bahasa, termasuk F#, Python, JavaScript dan TypeScript, tidak menyokongnya. Kemasukannya dalam C#/VB adalah terutamanya untuk menampung pengendali acara tak segerak.

Pendekatan Pilihan

Dalam contoh anda, jika anda melaraskan kod anda untuk menggunakan pengendali acara void async :

protected override async void OnLoad(EventArgs e)
{
    if (CustomTask == null)
        await PrimeCustomTask();
}

private async Task PrimeCustomTask()
{...}
Salin selepas log masuk

Kemudian kelemahan async tidak sah akan terhad kepada pengendali acara, menjadikan pengendalian pengecualian, gubahan dan ujian lebih terurus.

Atas ialah kandungan terperinci Mengapa Saya Harus Mengelakkan Kaedah Async Void dalam C#?. 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