Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan Async/Await dengan Cekap untuk Pelbagai Tugasan Selari dalam C#?
Andaikan klien API tak segerak digunakan, yang mengembalikan Tugas atau Tugas
<code class="language-csharp">static async Task DoSomething(int siteId, int postId, IBlogClient client) { await client.DeletePost(siteId, postId); // 调用API客户端 Console.WriteLine("已删除帖子 {0}.", siteId); }</code>
Matlamatnya adalah untuk memulakan berbilang tugasan tak segerak serentak dan menunggu tugasan itu selesai. Dua kaedah yang biasa digunakan ialah Parallel.ForEach dan Task.WaitAll.
Walaupun Parallel.ForEach dan Task.WaitSemua kedua-duanya cuba melaksanakan tugasan secara selari, mereka mempunyai had.
Untuk mengatasi had ini, kami mengesyorkan menggunakan Task.WhenAll, yang boleh melaksanakan tugasan secara tidak segerak dan selari. Kod berikut menunjukkan penggunaannya:
<code class="language-csharp">public async Task DoWork() { int[] ids = new[] { 1, 2, 3, 4, 5 }; await Task.WhenAll(ids.Select(i => DoSomething(1, i, blogClient))); }</code>
Dalam kes ini, kerana tiada operasi susulan selepas tugasan selesai, menunggu tidak diperlukan. Kod ringkas berikut sudah memadai:
<code class="language-csharp">public Task DoWork() { int[] ids = new[] { 1, 2, 3, 4, 5 }; return Task.WhenAll(ids.Select(i => DoSomething(1, i, blogClient))); }</code>
Untuk mendapatkan lebih banyak cerapan dan perbandingan pendekatan ini, lihat catatan blog yang komprehensif: "Cara dan Tempat Menggunakan API Web ASP.NET untuk I/O Asynchronous Serentak".
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Async/Await dengan Cekap untuk Pelbagai Tugasan Selari dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!