Rumah >pembangunan bahagian belakang >C++ >Bagaimana saya boleh memanggil kaedah C# Asynchronous secara serentak?
, adalah penting untuk operasi serentak dan pengalaman pengguna yang dipertingkatkan. Walau bagaimanapun, mengintegrasikannya ke dalam kod kod segerak yang sedia ada memerlukan pertimbangan yang teliti. Mari kita periksa beberapa pendekatan. public async Task Foo()
Task.WaitAndUnwrapException
), ConfigureAwait(false)
menawarkan penyelesaian yang mudah: Task.WaitAndUnwrapException
<code class="language-csharp">var task = MyAsyncMethod(); var result = task.WaitAndUnwrapException();</code>Ini dengan kemas mengendalikan pengecualian tanpa lapisan tambahan
. Walau bagaimanapun, kaedah ini tidak sesuai jika AggregateException
memerlukan penyegerakan konteks. MyAsyncMethod
AsyncContext.RunTask
menyediakan konteks bersarang: AsyncContext.RunTask
<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>Ini berkesan menghalang kebuntuan yang mungkin timbul daripada menyekat menunggu tugas yang tidak menggunakan
. ConfigureAwait(false)
Task.Run
tidak sesuai (mis., Apabila kaedah asynchronous menunggu peristiwa UI), muat turun kaedah tak segerak ke kolam benang: AsyncContext.RunTask
<code class="language-csharp">var task = Task.Run(async () => await MyAsyncMethod()); var result = task.WaitAndUnwrapException();</code>Pendekatan ini menuntut bahawa
adalah thread-safe dan tidak bergantung kepada elemen UI atau konteks permintaan ASP.NET. Sebagai alternatif, menggunakan MyAsyncMethod
dengan kaedah 1 menyediakan alternatif yang berdaya maju. ConfigureAwait(false)
Atas ialah kandungan terperinci Bagaimana saya boleh memanggil kaedah C# Asynchronous secara serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!