Rumah >pembangunan bahagian belakang >C++ >`Task.Result` lwn. `menunggu Tugas`: Bilakah Anda Harus Menggunakan Yang Mana?
Pemahaman Task<T>.Result
dan await Task<T>
dalam Pengaturcaraan Asynchronous
Dalam pengaturcaraan tak segerak, pilihan antara await Task<T>
dan Task<T>.Result
memberi kesan ketara kepada prestasi dan pengendalian pengecualian. Mari kita periksa perbezaan utama.
Kaedah GetName
menggambarkan kedua-dua pendekatan:
Menggunakan Task<T>.Result
:
<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>
nameTask.Result
menyekat urutan semasa sehingga tugasan selesai. Ini tidak cekap untuk operasi yang berjalan lama, yang berpotensi menyebabkan aplikasi terhenti.
Menggunakan await Task<T>
:
<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>
await nameTask
mengeluarkan urutan panggilan, membenarkan tugasan lain dilaksanakan serentak. Kaedah disambung semula hanya apabila nameTask
selesai.
Perbezaan Kritikal:
Task<T>.Result
blok; await Task<T>
tidak.await Task<T>
menyebarkan pengecualian secara langsung; Task<T>.Result
membungkusnya dengan AggregateException
.Amalan Terbaik:
Task.Factory.StartNew
untuk tugasan latar belakang; gunakan Task.Run
sebaliknya untuk kecekapan yang lebih baik dan penyepaduan yang lebih baik dengan kumpulan benang .NET.Task<T>.Result
dan Task.Factory.StartNew
boleh digunakan untuk keselarian tugasan dinamik, mereka secara amnya tidak digalakkan dalam konteks pengaturcaraan tak segerak yang memihak kepada await
untuk responsif dan kebolehselenggaraan yang lebih baik. Menggunakan await
ialah pendekatan pilihan dan lebih mantap untuk operasi tak segerak.Atas ialah kandungan terperinci `Task.Result` lwn. `menunggu Tugas`: Bilakah Anda Harus Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!