私は単純なC#アプリケーションを持っています。これは多くのサーバーにHTTP GET
リクエストを送信し、ボタンクリック時にそれぞれから応答を得る必要があります。また、すべてのサーバーが応答した後にいくつかの操作を実行する必要があります。したがって、私はHttpWebRequest
クラスを非同期操作で使用し、すべてのコールバックで合計応答数をカウントできます。しかし、例えば、JavaScriptのようにAsync
のような高度なコールバックフロー制御のための特別なライブラリがあるかもしれません。C#で単一のコールバックで複数の非同期HTTPリクエストを作成
0
A
答えて
2
HttpWebRequest.GetResponseAsync
に電話してTask<WebResponse>
を取得することができます。次にTask.WhenAll
を呼び出して別のタスクを取得します。このタスクは、他のすべてのタスクが終了すると終了します。すべてのタスクを同期して待機するには、Task.WaitAll
を使用します。
例:
async void StartRequests()
{
// start requests
var responseTasks = requests
.Select(
r => HttpWebRequest.GetResponseAsync(r)
// you can attach continuation to every task
.ContinueWith(t => ProcessResult(t.Result)))
.ToArray();
// wait for all tasks to finish
await Task.WhenAll(responseTasks);
// ...
}
便利なリンク: Task Parallel Library、 Asynchronous Programming with async and await
はまた、私は信じて、System.Net.Http.HttpClientは、HTTP呼び出しを行うためのより便利なクラスです。
関連する問題
- 1. okhttp3で複数の非同期HTTP 2.0リクエストを作成する
- 2. アップロード複数のファイルの非同期のHTTPアンドロイドが、成功コールバックは
- 3. C#WPFで非同期のWebリクエストを作成する方法
- 4. PHPでの非同期HTTPリクエスト
- 5. restfull Webサービスでの非同期HTTPリクエスト
- 6. 複数の非同期HTTP GETリクエストを送信
- 7. AlamoFireなしで同時の非同期HTTPリクエストを作成する方法
- 8. Silverlightで単一ObservableCollectionにアクセスする複数の非同期メソッド
- 9. 複数のHTTPリクエスト/ w単一ソケット
- 10. $ httpで同期httpリクエストのループを作成するには?
- 11. Node.jsの単一のHTTPリクエストで複数のHTTPリクエストを呼び出す
- 12. Silverlightで複数の非同期HTTPリクエストを連続して処理する
- 13. Node.jsのsqliteデータベースの非同期HTTPリクエスト
- 14. ノードjsの非同期で複数のコールバック
- 15. 非同期リクエストを作成する
- 16. アイデア:単一のHTTPリクエストを使用して複数のhttpレスポンスを生成
- 17. 複数のポストxmlデータをグーグルと複数の非同期リクエスト
- 18. 非同期HTTPリクエストの順序
- 19. Google Volley HTTPリクエストは同期または非同期ですか?
- 20. Moq非同期コールバックが複数のパラメータで失敗する
- 21. Angular Js Promisesを使用して複数の非同期リクエストを作成する
- 22. Nettyクライアントで複数の非同期リクエストを送信する
- 23. 非同期HTTP非同期CTPを使用して単一の機能でデータをポスト
- 24. 複数の同時HTTPリクエスト
- 25. C#非同期HTTPコールを作成する
- 26. ノードjsで非同期コールバックを作成する方法は?
- 27. バックグラウンドでの複数の非同期HTTP要求iPhone
- 28. 非同期シングルサーバ複数のクライアントがC#
- 29. iOS - 複数の非同期リクエストを同時に実行する
- 30. .NETでの単一のHTTPリクエストに対する複数のHTTPレスポンスの送信
この問題にアプローチする方法は多すぎます。答えは、ひとりの人が好んでいたわらの投票に変わるはずです。一番良いのは、トピックについての研究を自分で行い、2つか3つを見つけて、分析し、あなたのために働くかどうかを判断し、それらを試してみることです。あなたが何かしようとしたことについて特定の質問があるときは、私たちにお越しください。 – FrankerZ
@FrankerZ単純なコールバックライブラリが必要です。これにより、複数の非同期操作に対して1つのコールバックを持つことができます。 – JustLogin
残念ながら、書籍、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソースをお勧めしたり、探してもらうための質問は、ここでは話題にはなりません。より良い運[SoftwareRecs.SE](// softwarerecs.stackexchange.com/tour)を見つけることができます。このサイトよりも厳密であるため、[質問の要件](// softwarerecs.stackexchange.com/help/on-topic)を必ずお読みください。 – FrankerZ