Rumah >pembangunan bahagian belakang >C++ >Task.Result vs GetAwaiter (). GetResult (): Kaedah mana yang harus anda gunakan untuk pelaksanaan tugas segerak?

Task.Result vs GetAwaiter (). GetResult (): Kaedah mana yang harus anda gunakan untuk pelaksanaan tugas segerak?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-24 11:56:10636semak imbas

Task.Result vs. GetAwaiter().GetResult(): Which Method Should You Use for Synchronous Task Execution?

Task.Result and .GetAwaiter ().

Apabila memproses kod asynchronous, pemaju sering perlu melakukan kaedah pelaksanaan serentak. Ini boleh dilaksanakan menggunakan atau . Walau bagaimanapun, terdapat perbezaan halus antara kedua -dua kaedah ini, yang patut dipertimbangkan.

Task.getAwait (). Task.Result Ketiga kaedah ini akan menyekat benang panggilan dan menunggu tugas selesai. Walau bagaimanapun, lebih baik daripada dan .GetAwaiter().GetResult(), kerana ia secara langsung menyebarkan kelainan yang dibuang oleh tugas, bukan untuk membungkusnya dalam

. Tingkah laku ini sangat penting untuk rawatan yang betul.

Task.wait dan Task.Result Mengapa tidak menyebarkan tidak normal

Menurut Microsoft, reka bentuk Task.GetAwaiter().GetResult() dan Task.Wait adalah untuk mengekalkan keserasian mundur. Oleh itu, mereka dibungkus dalam Task.Result untuk mengekalkan kod sedia ada. Walau bagaimanapun, kaedah ini boleh membuat kesilapan dalam menentukan tugas sebenar sukar. AggregateException

cadangan

Walaupun mempunyai lebih banyak kelebihan dalam rawatan yang tidak normal daripada

dan

, ketiga -tiga kaedah ini boleh membawa kepada kunci yang berpotensi mati dan kelaparan kolam benang. Amalan terbaik adalah untuk mengelakkan menyekat tugas -tugas tak segerak, tetapi bergantung pada mod Task.Wait, yang membolehkan aplikasi terus bekerja ketika melaksanakan tugas di latar belakang. Task.Result

Atas ialah kandungan terperinci Task.Result vs GetAwaiter (). GetResult (): Kaedah mana yang harus anda gunakan untuk pelaksanaan tugas segerak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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