HttpWebRequest.BeginGetRequest()を使用して、1つのメソッドから500の非同期HTTP要求を作成しています。私は、そのメソッドがすべてのリクエストから応答を得るか、タイムアウトするまで待つことを望みます。非同期要求が完了するまで.NET 4スレッドが待機するようにするにはどうすればよいですか?
これを行うにはどのような方法が最適ですか?
Tasks.WaitAll()を使用するためにTaskオブジェクトのList内で非同期呼び出しをラップしていますが、これが良い解決策であることを知る前にウサギの穴をあまりに遠くに行きたくないです。
アイデア?
EDIT
私はカウンターを実装し、彼らは動作しますが、私はこのページに表示されるように、デリゲートを使用する方法について興味があります。
Multi-threading and Async Examples
誰もが前にこのような何かをやっていますか?それは過労ですか?
フィードバックありがとうございます。私は本当に簡単にカウンターを実装できると思う。これは一回限りの解決策であるため、UIの応答性については心配していません。基本的には、呼び出されると、一連のホストに照会し、応答を解析し、その応答をデータベースに格納するWebサービスです。 – GregB
これは、非同期タスクを管理する呼び出しスレッドがUIスレッドでなければならないことを前提としています。おそらく、UIスレッドに他のすべてを管理する単一の非同期タスクを生成させ、UIロジックに負担をかけるのではなく進捗を報告する方がよいでしょう。 –
@Tylerはこう述べています。「個人的に私はスレッドをブロックしません。非同期モデルの目的を破ります。 コンソールアプリケーションなどで、すべてのスレッドが完了するまで待つ必要が生じることがあります。コンソールアプリケーションがすぐに終了すると、それらのスレッドはすべて完了せずにただちに終了します。 –