Rumah >pembangunan bahagian belakang >C++ >Adakah `Task.getAwaiter ().
Adakah ia bersamaan dengan ? Task.GetAwaiter().GetResult()
Task.Result
Dalam pengaturcaraan asynchronous, kadang -kadang kaedah asynchronous diperlukan untuk melakukan serentak. Satu kaedah adalah menggunakan , tetapi ini boleh menyebabkan keletihan kunci mati dan sumber kolam benang. Walau bagaimanapun, ia dianggap lebih baik daripada dan , kerana ia menyebarkan keabnormalan secara langsung, dan bukannya membungkusnya dalam
Task.GetAwaiter().GetResult()
Task.Wait
, Task.Result
dan AggregateException
perbezaan
dan Task.GetAwaiter().GetResult()
secara automatik akan membungkus pembungkusan yang tidak normal dalam Task.Wait
, ini untuk mengekalkan keserasian dengan versi bingkai awal. Sebaliknya, secara langsung menyebarkan keabnormalan dan mengelakkan masalah pembungkusan. Task.Result
Task.Wait
Task.Result
Pasukan Microsoft PFX berkata AggregateException
membolehkan pemaju mengakses logik komunikasi yang tidak normal yang digunakan oleh pengendali Task.GetAwaiter().GetResult()
. Ini sangat berguna di tempat kejadian yang perlu dikekalkan tanpa pembungkusan.
Pakar Stephen Cleary terus menekankan kejelasan . Beliau menjelaskan bahawa ia jelas menyatakan pemeriksaan yang salah dan mencadangkan untuk menggunakannya sebagai kaedah pilihan untuk halangan segerak dalam keadaan tertentu. Task.GetAwaiter().GetResult()
amaran:
task.GetAwaiter().GetResult()
walaupun mempunyai kelebihan yang jelas, ia harus mengelakkan bergantung pada itu, await
, dan
Atas ialah kandungan terperinci Adakah `Task.getAwaiter ().. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!