Rumah > pembangunan bahagian belakang > C++ > Async/menunggu di C#: Bilakah untuk mengembalikan tugas vs tidak sah?

Async/menunggu di C#: Bilakah untuk mengembalikan tugas vs tidak sah?

Barbara Streisand
Lepaskan: 2025-02-01 14:11:08
asal
617 orang telah melayarinya

Async/Await in C#: When to Return Task vs. Void?

C

async Apabila menggunakan C#untuk pengaturcaraan asynchronous, kaedah Task boleh kembali void atau

. Pilihan ini penting kerana ia menentukan tingkah laku kaedah dan cara berinteraksi dengan kod panggilan.

async bila hendak kembali Task void

Biasanya, apabila anda ingin membuat kemajuan atau hasil operasi tak segerak ke pihak panggilan, anda harus kembali

. Ini membolehkan pemanggil menunggu tugas dan terus melakukan selepas selesai. Kembali ke Task juga boleh menggunakan pemprosesan yang tidak normal dan mod asynchronous, seperti

, yang boleh memantau kemajuan pelbagai tugas.

Task bila hendak kembali Task async-foreach

Satu -satunya keadaan yang sesuai untuk kembali

ke void adalah apabila anda jelas memerlukan jenis kembali

, sebagai contoh, dalam program pemprosesan acara atau panggil balik UI. Dalam kes ini, pemanggil tidak boleh menunggu kaedah ini, dan async dan void kata kunci tidak diperlukan. Elakkan kaedah Top -Level void async Kaedah mempunyai semantik khas dan harus digunakan dengan berhati -hati. Mereka mewakili operasi tak segerak teratas, dan berbanding dengan kaedah tugas yang kembali, mereka mempunyai peraturan rawatan yang tidak normal. Keabnormalan di bahagian atas dianggap keabnormalan yang tidak diproses dan boleh menyebabkan tingkah laku tidak sengaja. await

Sebagai contoh, pertimbangkan kod berikut:

async void

Dalam kes ini, menggunakan

tidak perlu, dan mungkin ada masalah, kerana: async void void

Ia menghalang pihak panggilan daripada menunggu kaedah ini dan memantau kemajuannya.

Keabnormalan dalam kaedah tidak akan diproses dan boleh menyebabkan tingkah laku aplikasi yang tidak normal.

<code class="language-C#">public static async void AsyncMethod2(int num)
{
    await Task.Factory.StartNew(() => Thread.Sleep(num));
}</code>
Salin selepas log masuk

Adalah lebih baik untuk menggunakan kaedah dan async void kata kunci untuk memastikan rawatan abnormal yang betul dan mengekalkan keupayaan untuk mengesan dan menguruskan operasi tak segerak.

Atas ialah kandungan terperinci Async/menunggu di C#: Bilakah untuk mengembalikan tugas vs tidak sah?. 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