.NET 同時非同期のI/O操作の数を効率的に管理することは、リソースの疲労を防ぐために不可欠です。 .NETは、これを達成するためのいくつかのメカニズムを提供します 非同期並行性コントロールの場合、
レバレッジ
.net 4.5以来、 'sメソッドは、堅牢な非同期セマフォ同期を提供します。これにより、同時非同期操作の数を正確に制御できます。
SemaphoreSlim
例は次のとおりです
TPLベースのタスクスケジューリングが同時実行制限SemaphoreSlim
WaitAsync()
<code class="language-csharp">public async Task MyOuterMethod() { // Semaphore initialized to allow 20 concurrent operations var throttler = new SemaphoreSlim(20); var tasks = new List<Task>(); foreach (var url in urls) { // Wait for available semaphore slot await throttler.WaitAsync(); tasks.Add(Task.Run(async () => { try { using (var client = new HttpClient()) { var html = await client.GetStringAsync(url); // Process html... } } finally { // Release semaphore slot after completion (success or failure) throttler.Release(); } })); } await Task.WhenAll(tasks); }</code>
を検討します
Custom:
MSDNは、微調整された並行性管理のためのカスタム実装の作成例を提供します。 並列の非非同期パターン:
タップ(タスク非同期パターン)または非同期ストリームを使用した非同期反復剤などの並列非同期パターンを使用すると、同時の非同期タスクの実行をさらに最適化できます。以上が.NETでの同時非同期I/O操作を制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。