Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan Kaedah Asynchronous dengan Selamat dalam C# Tanpa Menunggu?
Memanggil kaedah tak segerak tanpa menunggu boleh membawa kepada isu yang mungkin rumit. Artikel ini meneroka penyelesaian untuk memanggil kaedah tak segerak dengan selamat dalam C# tanpa menunggu hasilnya.
Dalam senario yang diberikan, kaedah tak segerak MyAsyncMethod dipanggil daripada kaedah GetStringData yang mengembalikan data. Tidak menunggu menjana amaran dan menyekat pengecualian. Untuk menyelesaikan isu ini sambil mengelakkan panggilan tunggu, pertimbangkan perkara berikut:
Gunakan ContinueWith untuk mengendalikan pengecualian:
<code class="language-csharp">MyAsyncMethod().ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);</code>
Kaedah ini membenarkan pengendalian pengecualian pada benang berasingan. Ia tidak memerlukan menunggu di MyAsyncMethod pada urutan panggilan, tetapi menyediakan mekanisme untuk mengendalikan sebarang pengecualian yang mungkin timbul.
Cuba-Tangkap blok menggunakan ConfigureAwait(false):
<code class="language-csharp">try { MyAsyncMethod().ConfigureAwait(false); // 注意:这里去掉了 await } catch (Exception ex) { Trace.WriteLine(ex); }</code>
Kaedah ini menggunakan pilihan ConfigureAwait(false) untuk menyekat amaran yang dihasilkan oleh panggilan tak segerak. Ia membenarkan pengendalian eksplisit pengecualian menggunakan blok cuba-tangkap. Perbezaan utama ialah bukannya await
MyAsyncMethod, kami memanggil ConfigureAwait(false)
terus untuk mengelakkan penukaran konteks.
Nota tambahan:
Dalam konteks permintaan web (seperti dalam API Web ASP.NET), adalah penting untuk mengelakkan menunggu panggilan tak segerak. Ini kerana menunggu melambatkan respons kepada permintaan, mungkin meningkatkan masa respons. Penyelesaian yang disediakan membolehkan panggilan tak segerak tanpa menghalang kelajuan pemprosesan permintaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Kaedah Asynchronous dengan Selamat dalam C# Tanpa Menunggu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!