pengaturcaraan asynchronous menjadi semakin popular dalam pembangunan C#. Kadang -kadang anda mungkin menghadapi situasi yang perlu memanggil kaedah asynchronous dari konteks penyegerakan. Walaupun ini biasanya dilaksanakan dengan kaedah asynchronous, artikel ini membincangkan pelbagai kaedah yang dibawa ke jurang ini.
Kaedah 1: Gunakan tugas.waitandunwrapexception
Jika kaedah asynchronous anda adalah mudah dan tidak perlu disegerakkan dengan konteksnya, anda boleh menggunakan tugas.waitandunwrapexception untuk mendapatkan hasilnya. Kaedah ini akan menyelesaikan sebarang keabnormalan yang mungkin berlaku semasa operasi tak segerak.
Kaedah 2: Gunakan asynccontext.runtask
<code class="language-csharp">var task = MyAsyncMethod(); var result = task.WaitAndUnwrapException();</code>
Untuk kaedah yang perlu disegerakkan dengan konteks, anda boleh menggunakan asynccontext.runtask untuk membuat konteks bersarang. Secara lalai, AsyncContext merangkumi konteks penyegerakan semasa. Walau bagaimanapun, ia boleh digunakan untuk sebarang konteks.
Kaedah 3: Gunakan Task.run
<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>
Langkah berjaga -jaga
Apabila menggunakan kaedah ini, sila ingat perkara berikut:
<code class="language-csharp">var task = Task.Run(async () => await MyAsyncMethod()); var result = task.WaitAndUnwrapException();</code>
Kaedah hanya terpakai kepada kaedah yang tidak memerlukan penyegerakan konteks.
Kaedah 2 Jika kaedah asynchronous sedang menunggu insiden UI, ia boleh menyebabkan kebuntuan.Kaedah Tiga memerlukan kaedah asynchronous dikendalikan dengan betul pada konteks multi -threaded.
Atas ialah kandungan terperinci Bagaimana untuk memanggil kaedah asynchronous dari kod segerak dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!