Rumah > pembangunan bahagian belakang > C++ > Tunggu Tugasan lwn Tugasan. Keputusan: Apakah Perbezaannya?

Tunggu Tugasan lwn Tugasan. Keputusan: Apakah Perbezaannya?

Barbara Streisand
Lepaskan: 2025-01-08 08:56:42
asal
237 orang telah melayarinya

Await Task vs. Task.Result: What's the Difference?

await Task<T> lwn. Task<T>.Result dalam Pengaturcaraan Asynchronous

Memahami perbezaan teras antara await Task<T> dan Task<T>.Result adalah penting untuk pengaturcaraan tak segerak yang berkesan. Mari kita ilustrasikan ini dengan contoh praktikal.

Pertimbangkan kaedah ini:

<code class="language-csharp">public async Task<string> GetName(int id)
{
    Task<string> nameTask = Task.Factory.StartNew(() => string.Format("Name matching id {0} = Developer", id));
    return nameTask.Result;
}</code>
Salin selepas log masuk

Di sini, Task<T>.Result digunakan untuk mendapatkan semula hasil tugasan. Walau bagaimanapun, pendekatan ini boleh memberi kesan yang teruk kepada keselarasan kerana ia memaksa urutan panggilan menunggu serentak untuk penyiapan tugas.

Pengaturcaraan tak segerak menyelesaikan masalah ini dengan elegan menggunakan operator await, yang membolehkan penggantungan tidak menyekat. Berikut ialah versi tak segerak yang dipertingkatkan:

<code class="language-csharp">public async Task<string> GetName(int id)
{
    Task<string> nameTask = Task.Factory.StartNew(() => string.Format("Name matching id {0} = Developer", id));
    return await nameTask;
}</code>
Salin selepas log masuk

Dengan await, urutan panggilan dikeluarkan, membenarkan tugasan lain diteruskan. Setelah tugasan yang ditunggu-tunggu selesai, utas disambung semula dan hasilnya dikembalikan dengan lancar.

Pada dasarnya: await Task<T> memudahkan operasi tak segerak sebenar dengan menghasilkan benang, manakala Task<T>.Result menyekat benang sehingga tugasan selesai. Perbezaan penting ialah cara pengecualian dikendalikan: Result membalut pengecualian dalam AggregateException, manakala await melontar semula pengecualian asal secara langsung.

Atas ialah kandungan terperinci Tunggu Tugasan lwn Tugasan. Keputusan: Apakah Perbezaannya?. 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