Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk secara serentak melaksanakan kaedah tugas async di C#?

Bagaimana untuk secara serentak melaksanakan kaedah tugas async di C#?

Linda Hamilton
Linda Hamiltonasal
2025-02-01 07:06:09273semak imbas

How to Synchronously Execute an Async Task Method in C#?

secara serentak melaksanakan tugas C#Asynchronous

Dalam pengaturcaraan asynchronous,

kata kunci digunakan untuk menjeda kaedah sehingga operasi asynchronous tertentu selesai. Walau bagaimanapun, dalam beberapa kes, seperti ujian atau berinteraksi dengan rangka kerja/komponen lain, kaedah asynchronous mungkin diperlukan serentak.

await Terdapat banyak cara untuk mencapai matlamat ini, tetapi tidak semua kaedah sesuai untuk semua adegan. Berikut adalah beberapa kaedah biasa:

Kaedah 1: Gunakan tugas.

Menyekat benang semasa sehingga operasi asynchronous selesai. Tetapi jika tugas itu dilaksanakan pada benang yang sama yang menantinya, ia boleh menyebabkan kebuntuan.

Kaedah 2: Gunakan tugas. menjalankan operasi asynchronous pada benang semasa tanpa halangan. Tetapi kaedah ini memerlukan tugas itu tidak terikat kepada Suruhanjaya, yang tidak selalu dapat dilaksanakan.

Task.Wait() Kaedah 3: Gunakan kelas TaskCompletionsource

kelas
<code class="language-csharp">Task<Customer> task = GetCustomers();
task.Wait();</code>

Membolehkan tugas penciptaan manual dan melengkapkannya selepas operasi tak segerak selesai.

Kaedah 4: Gunakan kelas Auxiliary Custom Task.RunSynchronously()

<code class="language-csharp">Task<Customer> task = GetCustomers();
task.RunSynchronously();</code>
Beberapa perpustakaan ketiga -tiga menyediakan kaedah tambahan untuk menjalankan tugas -tugas asynchronous dalam penyegerakan. Sebagai contoh, Perpustakaan Asynchelpers:

Cara terbaik bergantung kepada senario tertentu dan keperluan aplikasi. Apabila memilih mekanisme pelaksanaan segerak, pastikan anda mempertimbangkan potensi kunci dan kesan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk secara serentak melaksanakan kaedah tugas async di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn