2016-08-13 6 views
0

私は単純なC#アプリケーションを持っています。これは多くのサーバーにHTTP GETリクエストを送信し、ボタンクリック時にそれぞれから応答を得る必要があります。また、すべてのサーバーが応答した後にいくつかの操作を実行する必要があります。したがって、私はHttpWebRequestクラスを非同期操作で使用し、すべてのコールバックで合計応答数をカウントできます。しかし、例えば、JavaScriptのようにAsyncのような高度なコールバックフロー制御のための特別なライブラリがあるかもしれません。C#で単一のコールバックで複数の非同期HTTPリクエストを作成

+0

この問題にアプローチする方法は多すぎます。答えは、ひとりの人が好んでいたわらの投票に変わるはずです。一番良いのは、トピックについての研究を自分で行い、2つか3つを見つけて、分析し、あなたのために働くかどうかを判断し、それらを試してみることです。あなたが何かしようとしたことについて特定の質問があるときは、私たちにお越しください。 – FrankerZ

+0

@FrankerZ単純なコールバックライブラリが必要です。これにより、複数の非同期操作に対して1つのコールバックを持つことができます。 – JustLogin

+0

残念ながら、書籍、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソースをお勧めしたり、探してもらうための質問は、ここでは話題にはなりません。より良い運[SoftwareRecs.SE](// softwarerecs.stackexchange.com/tour)を見つけることができます。このサイトよりも厳密であるため、[質問の要件](// softwarerecs.stackexchange.com/help/on-topic)を必ずお読みください。 – FrankerZ

答えて

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 LibraryAsynchronous Programming with async and await

はまた、私は信じて、System.Net.Http.HttpClientは、HTTP呼び出しを行うためのより便利なクラスです。

関連する問題