.NET
での同時非同期I/O操作の管理多くの非同期操作を効率的に処理することは、リソースの疲労を防ぐために不可欠です。この記事では、共通のシナリオについて説明します。同時リクエストの数を制限しながら、複数のURLに並列HTTP要求を実行します。
async semaphoreをレバレッジ .NET 4.5ベータで拡張された
.NETのクラスは、同時非同期操作を制御するための効率的な非同期セマフォを提供します。 実装方法は次のとおりです
SemaphoreSlim
このコードは、最大20の同時リクエストを可能にするセマフォを作成します。各
<code class="language-csharp">public async Task MyOuterMethod() { var throttler = new SemaphoreSlim(initialCount: 20); foreach (var url in urls) { await throttler.WaitAsync(); using (var client = new HttpClient()) // Added using statement for proper resource disposal { var html = await client.GetStringAsync(url); } throttler.Release(); } }</code>
ステートメントの追加に注意してください。
HttpClient
using
代替:TPLベースのタスクスケジューリングHttpClient
タスクパラレルライブラリ(TPL)は、別のアプローチを提供します。 デリゲートにバインドされたタスクを作成し、カスタムタスクスケジューラを採用することにより、並行性を管理できます。 MSDNは、さらなる探索のためのカスタム実装の例を提供します。
Async Semaphoreの利点TaskScheduler
パフォーマンスの強化:
効率的な非同期スケジューリングにより、パフォーマンスが向上します
以上が.NETの同時非同期操作を制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。