Gunakan Tugasan. Jalankan untuk memanggil kaedah tak segerak secara serentak
Pengaturcaraan tak segerak membolehkan kami melakukan operasi yang berjalan lama tanpa menyekat utas utama. Walau bagaimanapun, dalam beberapa kes kita mungkin perlu memanggil kaedah tak segerak secara serentak. Begini cara untuk mencapainya menggunakan Task.Run:
Adegan:
Pertimbangkan kaedah tak segerak berikut:
<code class="language-c#">public async Task<string> GenerateCodeAsync() { string code = await GenerateCodeService.GenerateCodeAsync(); return code; }</code>
Andaikan kita perlu memanggil kaedah ini secara serentak daripada kaedah segerak yang lain.
Penyelesaian:
Untuk menjalankan kaedah tak segerak secara serentak, kita boleh menggunakan kaedah Task.Run untuk melaksanakannya dalam urutan kumpulan benang:
<code class="language-c#">string code = Task.Run(() => GenerateCodeAsync()).GetAwaiter().GetResult();</code>
Kod ini menggunakan langkah berikut:
Kelemahan menggunakan .Hasil secara langsung:
Kaedah mudah untuk mengakses terus sifat Hasil tugasan (iaitu string code = GenerateCodeAsync().Result;
) harus dielakkan kerana ia mempunyai kelemahan berikut:
.GetAwaiter().GetResult()
kami mengelakkan masalah ini dan menerima pengecualian secara langsung. Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Kaedah Tak Segerak Menggunakan Task.Run?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!