mencapai operasi tak segerak yang cekap dalam .net
Pengaturcaraan Asynchronous sering memerlukan pelaksanaan berhenti sehingga peristiwa tertentu mencetuskan. Kaedah tradisional seperti mengundi atau menyekat benang tidak cekap dan mengambil sumber yang berlebihan. Nasib baik, Modern .NET menawarkan penyelesaian yang lebih baik untuk pelaksanaan asynchronous yang didorong oleh peristiwa.
memanfaatkan semaphoreslim untuk penyegerakan
Kelas menyediakan mekanisme isyarat yang mantap. Contoh SemaphoreSlim
bertindak sebagai isyarat, membolehkan benang menunggu sehingga benang lain melepaskannya. Pertimbangkan contoh ini: SemaphoreSlim
<code class="language-csharp">private SemaphoreSlim signal = new SemaphoreSlim(0, 1); // Release the signal when the "Continue" button is pressed private void ButtonContinue_Click(object sender, RoutedEventArgs e) { signal.Release(); } // Await the signal in `GetResults` private async Task GetResults() { await signal.WaitAsync(); // Proceed after signal release }</code>
Menggunakan TaskCompletionsource untuk Pengurusan Tugas
Sebagai alternatif, menawarkan cara untuk membuat TaskCompletionSource
yang mewakili penyelesaian acara. Tugas ini kemudiannya boleh ditunggu -tunggu di tempat lain dalam kod. Berikut adalah ilustrasi: Task
<code class="language-csharp">private TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(); // Complete the task when the "Continue" button is pressed private void ButtonContinue_Click(object sender, RoutedEventArgs e) { tcs.SetResult(true); } // Await the task in `GetResults` private async Task GetResults() { await tcs.Task; // Proceed after task completion }</code>
Ringkasan
dan SemaphoreSlim
menawarkan kaedah yang cekap, yang didorong oleh peristiwa untuk menguruskan pelaksanaan pelaksanaan asynchronous jeda dan resepsi di C#. Teknik-teknik ini mewujudkan kod asynchronous yang responsif dan berskala tanpa overhead pembekuan yang sibuk atau menyekat benang. TaskCompletionSource
Atas ialah kandungan terperinci Bagaimanakah saya dapat mencapai pelaksanaan asynchronous berasaskan peristiwa yang cekap dalam .net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!