Rumah > pembangunan bahagian belakang > C++ > Menunggu tugas.run (): Apakah perbezaan antara `menunggu tugas.run (); kembali; `dan` kembali tugas.run () `?

Menunggu tugas.run (): Apakah perbezaan antara `menunggu tugas.run (); kembali; `dan` kembali tugas.run () `?

DDD
Lepaskan: 2025-01-30 03:46:10
asal
243 orang telah melayarinya

Await Task.Run(): What's the Difference Between `await Task.Run(); return;` and `return Task.Run()`?

Operasi Asynchronous:

Perbezaan halus antara dan await Task.Run(); return; return Task.Run()

Pada pandangan pertama, kedua -dua kod ini kelihatan sangat serupa:

<code class="language-csharp">async Task TestAsync() 
{
    await Task.Run(() => DoSomeWork());
    return;
}</code>
Salin selepas log masuk
<code class="language-csharp">Task TestAsync() 
{
    return Task.Run(() => DoSomeWork());
}</code>
Salin selepas log masuk
Walaupun kedua -duanya menggunakan

panggilan tugas asynchronous, terdapat perbezaan halus dan penting dalam tingkah laku mereka. Task.Run()

Komunikasi yang tidak normal

Perbezaan utama adalah rawatan yang tidak normal. Dalam contoh pertama, penggunaan

dan

akan ditangkap dan dibuang apabila kaedah asynchronous sedang menunggu kaedah tak segerak kemudian. Ini membolehkan pemanggil mengendalikan keabnormalan dengan elegan. await DoSomeWork() Sebaliknya, dalam contoh kedua

, apa -apa pengecualian akan tersebar dengan segera, dan pelaksanaan kaedah panggilan mungkin terganggu. Ini boleh menyebabkan tingkah laku yang tidak dijangka dan membuat rawatan yang tidak normal mencabar.

await segerak di atas

Perbezaan lain berkaitan dengan konteks segerak. Dalam contoh , operasi dalam berjalan dalam konteks segerak benang panggilan. Sebaliknya, dalam contoh , beroperasi dalam konteks kolam benang yang berbeza.

Lock Dead await DoSomeWork() return Task.Run() Apabila melakukan operasi tak segerak dalam aplikasi GUI dengan konteks penyegerakan bukan -default, kaedah

lebih cenderung berlaku. Sebagai contoh, jika anda memulakan operasi tak segerak dan gunakan

dari benang UI, kebuntuan mungkin berlaku. ringkasan

await Hasil kedua -dua serpihan kod ini berbeza, terutamanya kerana ia berbeza daripada penggunaan keabnormalan dan penggunaan await. Untuk operasi asynchronous, penggunaan dapat mengawal penyebaran yang tidak normal dan memastikan bahawa ia dilaksanakan dengan betul dalam konteks penyegerakan yang betul.

Atas ialah kandungan terperinci Menunggu tugas.run (): Apakah perbezaan antara `menunggu tugas.run (); kembali; `dan` kembali tugas.run () `?. 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