Rumah > pembangunan bahagian belakang > C++ > Async/menunggu: Sekiranya saya mengembalikan tugas atau tidak sah?

Async/menunggu: Sekiranya saya mengembalikan tugas atau tidak sah?

Susan Sarandon
Lepaskan: 2025-02-01 14:06:10
asal
368 orang telah melayarinya

Async/Await: Should I Return a Task or Void?

Nilai pulangan kaedah async/menunggu: tugas atau tidak sah?

Dalam pengaturcaraan asynchronous, nilai pulangan kaedah adalah

atau

akan mempunyai kesan yang signifikan. Artikel ini akan meneroka adegan yang sesuai setiap pilihan. async Task kembali ke tugas void

Biasanya, kaedah harus kembali . Ini membolehkan kod panggilan tugas ini dan menjejaki kemajuannya apabila perlu. Pengecualian utama peraturan ini adalah apabila anda jelas memerlukan

untuk mengembalikan jenis, seperti peristiwa pengendalian.

async kembali ke kekosongan Task await void Gunakan kaedah jenis

untuk menandakannya sebagai "operasi asynchronous atas". Tingkah laku operasi ini berbeza apabila tidak normal. Berbeza dengan nilai pulangan, kelainan

dalam kaedah asynchronous tidak akan diperhatikan di bawah lalai. Mereka akan menjadi pengecualian yang tidak bersedia dan boleh mencetuskan program pemprosesan .

pertimbangkan contoh berikut:

void async Dalam contoh ini, Task dan void kata kunci tidak perlu kerana tidak perlu secara jelas mengendalikan keabnormalan. Walau bagaimanapun, jika keabnormalan berlaku, ia tidak akan diperhatikan dan mungkin tidak diproses dengan betul. TaskScheduler.UnobservedTaskException

Contoh rawatan abnormal

<code class="language-csharp">public static async void AsyncMethod2(int num)
{
    await Task.Factory.StartNew(() => Thread.Sleep(num));
}</code>
Salin selepas log masuk
Untuk menunjukkan perbezaan antara rawatan yang tidak normal antara dan

kaedah asynchronous, sila pertimbangkan kod berikut: async await

Jika anda memanggil , anda boleh melihat kelainan dan melihatnya sebagai keabnormalan yang tidak diproses lain. Walau bagaimanapun, jika dipanggil, ia tidak akan melihat keabnormalan dan akan diproses oleh program pemprosesan

, yang akan membawa kepada tingkah laku yang tidak dipertahankan. Amalan Terbaik

Task sebagai amalan terbaik, melainkan jika anda jelas memerlukan void untuk mengembalikan jenis, anda akan sentiasa kembali

dari kaedah
<code class="language-csharp">static async void f()
{
    await h();
}

static async Task g()
{
    await h();
}

static async Task h()
{
    throw new NotImplementedException();
}</code>
Salin selepas log masuk
. Ini memastikan bahawa keabnormalan dikendalikan dengan betul, dan pemanggil boleh memilih

tugas dan menjejaki kemajuannya. f g Untuk maklumat lanjut, sila rujuk dokumen Microsoft pada TaskScheduler.UnobservedTaskException/

amalan terbaik:

https://www.php.cn/link/d3ddedd999aa150f47c2d0a55cb17898

Atas ialah kandungan terperinci Async/menunggu: Sekiranya saya mengembalikan tugas atau 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