Rumah > pembangunan bahagian belakang > C++ > Menunggu lwn. Keputusan: Bilakah Anda Harus Menggunakan `menunggu` Daripada `.Result` dalam Tugasan Async C#?

Menunggu lwn. Keputusan: Bilakah Anda Harus Menggunakan `menunggu` Daripada `.Result` dalam Tugasan Async C#?

DDD
Lepaskan: 2025-01-22 22:51:09
asal
799 orang telah melayarinya

Await vs. Result: When Should You Use `await` Instead of `.Result` in C# Async Tasks?

Pilihan await dan .Result dalam tugas tak segerak C#

Dalam "Buku Panduan Pengaturcaraan Serentak C#" Stephen Cleary, satu teknik menarik perhatian saya:

<code class="language-csharp">var completedTask = await Task.WhenAny(downloadTask, timeoutTask);
if (completedTask == timeoutTask)
  return null;
return await downloadTask;</code>
Salin selepas log masuk

Memandangkan downloadTask akan selesai tanpa tamat masa, mengapa kita perlu melakukan satu saat await dan bukannya kembali terus ke downloadTask.Result?

Kelebihan

await berbanding .Result

Pengarang menyerlahkan dua sebab utama untuk menggunakan await sebagai keutamaan kepada .Result (atau Wait):

  1. Pengendalian Pengecualian: await tidak membalut pengecualian dalam AggregateException, memberikan mekanisme pengendalian pengecualian yang lebih jelas.
  2. Elakkan kebuntuan: Menggunakan .Result atau Wait dalam kaedah tak segerak boleh menyebabkan kebuntuan atau isu masa jalan yang halus.

Panduan Pengguna

Walaupun penggunaan .Result atau Wait tidak dilarang sepenuhnya, garis panduan berikut disyorkan:

  • Kod aplikasi tak segerak: Sentiasa gunakan await.
  • Pustaka Utiliti Tak Segerak: Boleh digunakan dengan .Result atau Wait dengan berhati-hati dan dengan dokumentasi yang mencukupi.
  • Kod tugas selari: Untuk tugas selari bukan tak segerak, .Result dan Wait adalah sesuai.

Dengan mengikut garis panduan ini, pembangun boleh meningkatkan pengendalian pengecualian, mengelakkan kebuntuan dan menulis kod tak segerak yang lebih mantap dan boleh diselenggara.

Atas ialah kandungan terperinci Menunggu lwn. Keputusan: Bilakah Anda Harus Menggunakan `menunggu` Daripada `.Result` dalam Tugasan Async 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan