Rumah > pembangunan bahagian belakang > C++ > `.GetAwaiter (). GetResult ()` vs `task.result`: Bilakah anda harus menggunakan masing -masing?

`.GetAwaiter (). GetResult ()` vs `task.result`: Bilakah anda harus menggunakan masing -masing?

Susan Sarandon
Lepaskan: 2025-01-24 11:51:10
asal
219 orang telah melayarinya

`.GetAwaiter().GetResult()` vs. `Task.Result`: When Should You Use Each?

Task.GetAwaiter().GetResult() lwn. Task.Result: Bila hendak menggunakan yang mana?

Keperluan untuk melaksanakan kaedah asynchronous secara serentak dalam kod adalah sangat biasa. Ini boleh dicapai melalui atribut Task atau .GetAwaiter().GetResult() .Result. Walau bagaimanapun, adalah penting untuk memahami nuansa dan potensi kelemahan kedua-dua pendekatan.

Task.GetAwaiter().GetResult()

Memanggil Task pada .GetAwaiter().GetResult() akan mendapatkan terus keputusannya atau membuang sebarang pengecualian yang tidak diperhatikan. Tingkah laku ini lebih baik daripada .Wait() dan .Result kerana ia memastikan penyebaran pengecualian asal tanpa merangkumnya dalam AggregateException.

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa .GetAwaiter().GetResult(), seperti .Wait() dan .Result, mempunyai risiko kebuntuan yang sama dan keletihan sumber kumpulan benang.

Task.Result

Atribut

Task.Result juga akan mendapatkan semula keputusannya dan akan membuang TaskCanceledException jika tugasan dibatalkan. Walau bagaimanapun, sebarang pengecualian lain yang tidak diperhatikan dalam operasi tak segerak akan ditangkap dan dibungkus dalam AggregateException.

Bila hendak menggunakan kaedah yang mana

Walaupun .GetAwaiter().GetResult() mempunyai kelebihan penyebaran pengecualian, adalah sangat disyorkan untuk mengelakkan penyekatan segerak tugas tak segerak apabila boleh. Pendekatan ini boleh menyebabkan kebuntuan dan keletihan sumber. Sebaliknya, pertimbangkan untuk menulis kod tak segerak sepenuhnya menggunakan mekanisme async/await untuk mengelakkan masalah ini.

Atas ialah kandungan terperinci `.GetAwaiter (). GetResult ()` vs `task.result`: Bilakah anda harus menggunakan masing -masing?. 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