Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memanggil Kaedah Asynchronous dalam C#?
Melaksanakan Kaedah Tak Segerak Secara Segerak
Pengaturcaraan tak segerak dalam C# menyediakan cara yang cekap untuk mengendalikan operasi yang berjalan lama tanpa membekukan utas aplikasi utama. Walau bagaimanapun, situasi mungkin timbul apabila anda perlu memanggil kaedah tak segerak secara serentak daripada konteks segerak.
Penyelesaian: Menggunakan Task.Run
Untuk mencapai pelaksanaan segerak kaedah tak segerak, kaedah Task.Run
menawarkan penyelesaian praktikal. Ia memunggah operasi tak segerak ke utas kumpulan benang, membenarkan utas panggilan menunggu untuk selesai:
<code class="language-csharp">string code = Task.Run(() => GenerateCodeAsync()).GetAwaiter().GetResult();</code>
Kenapa Elakkan Terus Menggunakan .Result
?
Walaupun mengakses Result
sifat sesuatu tugasan mungkin kelihatan mudah, ia membawa dua kemungkinan risiko:
.Result
boleh menyebabkan kebuntuan jika operasi tak segerak cuba mengakses utas utama semasa ia sudah disekat menunggu keputusan. Task.Run
mengurangkan risiko ini dengan melaksanakan operasi async pada urutan yang berasingan..Result
membungkus pengecualian daripada kaedah tak segerak dalam AggregateException
. Menggunakan .GetAwaiter().GetResult()
mengelakkan perkara ini dengan membuka pengecualian, memudahkan pengendalian ralat.Ringkasan
Menggunakan Task.Run
bersama-sama dengan penunggunya menyediakan pendekatan yang boleh dipercayai dan cekap untuk menggunakan kaedah tak segerak secara serentak dalam kod segerak. Kaedah ini mengelakkan kemungkinan kebuntuan dan memudahkan pengurusan pengecualian.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Kaedah Asynchronous dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!