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
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
<code class="language-csharp">public static async void AsyncMethod2(int num) { await Task.Factory.StartNew(() => Thread.Sleep(num)); }</code>
kaedah asynchronous, sila pertimbangkan kod berikut: async
await
, 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
<code class="language-csharp">static async void f() { await h(); } static async Task g() { await h(); } static async Task h() { throw new NotImplementedException(); }</code>
tugas dan menjejaki kemajuannya. f
g
Untuk maklumat lanjut, sila rujuk dokumen Microsoft pada TaskScheduler.UnobservedTaskException
/
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!