Rumah >pembangunan bahagian belakang >C++ >Bilakah saya harus mengembalikan tugas vs tidak sah dalam kaedah async/menunggu?
Task
dalam kaedah asynchronous void
Task
void
mengembalikan async
:
Kembali umumnya pendekatan yang disyorkan. Ia membolehkan pemanggil: Task
menanti hasilnya: Task
Jika operasi tak segerak menghasilkan nilai,
Task
menyediakan sifat dan kaedah untuk mengesan status operasi (mis., Task
ditangkap oleh IsCompleted
dan boleh dikendalikan dengan sewajarnya oleh pemanggil menggunakan IsFaulted
blok. async
: Task
try-catch
void
Operasi api-dan-forget:
void
Pengecualian yang tidak dapat diamati: Pengecualian dalam async void
kaedah tidak disebarkan secara automatik kepada pemanggil. Sekiranya tidak diendahkan, mereka mungkin membawa kepada peristiwa , berpotensi merosakkan permohonan itu dengan senyap. Ini adalah sebab utama untuk mengelakkan
async void
async void
UnobservedTaskException
(kembali async void
) lebih disukai untuk pengendalian ralat yang lebih baik dan keupayaan untuk menanti hasilnya. Kesimpulan:
<code class="language-csharp">public static async Task<int> AsyncMethod1(int num) { await Task.Delay(num); return num * 2; } public static async void AsyncMethod2(int num) { try { await Task.Delay(num); } catch (Exception ex) { // Handle exceptions here. Crucial for async void! Console.WriteLine($"Exception in AsyncMethod2: {ex.Message}"); } }</code>
Nikmat kembali AsyncMethod1
dalam kaedah Task<int>
yang paling banyak. Hanya gunakan AsyncMethod2
untuk senario tertentu seperti pengendali acara di mana nilai pulangan tidak diperlukan dan pengendalian pengecualian yang teliti dilaksanakan dalam kaedah. Mengabaikan garis panduan ini boleh membawa kepada isu-isu yang sukar untuk debug dalam kod asynchronous anda. Rujuk sumber luaran untuk penjelasan yang lebih terperinci. void
Atas ialah kandungan terperinci Bilakah saya harus mengembalikan tugas vs tidak sah dalam kaedah async/menunggu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!