Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Panggil Kaedah Asynchronous secara serentak dalam C# Tanpa Deadlock?
Panggil kaedah tak segerak secara serentak
Andaikan terdapat kaedah tak segerak, katakan GenerateCodeAsync()
, yang mengembalikan tugasan. Untuk memanggil kaedah ini secara serentak, anda perlu mencari cara untuk menyelaraskan kod segerak dan tak segerak.
Satu penyelesaian ialah menjalankan kaedah tak segerak dalam benang kolam benang dan gunakan awaiter
untuk menyekat benang sehingga operasi selesai:
<code class="language-csharp">string code = Task.Run(() => GenerateCodeAsync()).GetAwaiter().GetResult();</code>
Kelemahan penggunaan .Hasil terus
Akses terus ke Result
hartanah boleh mengakibatkan:
Result
menyekat urutan utama, menghalang kod tak segerak daripada dilaksanakan. AggregateException
. Untuk mengelakkan masalah ini, GetAwaiter().GetResult()
kaedah:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Panggil Kaedah Asynchronous secara serentak dalam C# Tanpa Deadlock?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!