次の例のように、Task または Task
<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>
目標は、複数の非同期タスクを同時に開始し、完了するまで待つことです。よく使用される 2 つのメソッドは、Parallel.ForEach と Task.WaitAll です。
Parallel.ForEach と Task.WaitAll は両方ともタスクを並列実行しようとしますが、制限があります。
これらの制限を克服するには、タスクを非同期かつ並列で実行できる Task.WhenAll を使用することをお勧めします。次のコードはその使用法を示しています:
<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>
この場合、タスク完了後の後続動作はないため、await は必要ありません。次の簡略化されたコードで十分です:
<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>
これらのアプローチの詳細と比較については、包括的なブログ投稿「同時非同期 I/O に ASP.NET Web API を使用する方法と場所」を参照してください。
以上がC# で複数の並列タスクに Async/Await を効率的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。