4

ステータスを表示する Web ページの膨大なリストがあり、確認する必要があります。一部の URL は同じサイト内にあり、別のセットは別のサイトにあります。

現在、以下のようなコードを使用してこれを並行して実行しようとしていますが、オーバーヘッドが多すぎると感じています。

while(ListOfUrls.Count > 0){
  Parallel.ForEach(ListOfUrls, url =>
  {
    WebClient webClient = new WebClient();
    webClient.DownloadString(url);
    ... run my checks here.. 
  });

  ListOfUrls = GetNewUrls.....
}

これは、オーバーヘッドを減らし、使用/再利用する Web クライアントと接続の数をより細かく制御できますか? では、最終的に仕事をより速く行うことができるということでしょうか?

4

4 に答える 4

1

.Net 4.5 に新しく追加された HttpClient を使用してみてください。より高速であると考えられ、パフォーマンスが少し向上する可能性があります。

using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.GetAsync(url))
using (HttpContent content = response.Content)
{

    string result = await content.ReadAsStringAsync();


}
于 2013-10-15T20:06:31.393 に答える
-1

コードの非同期実行について考えましたか? インターネットからデータを取得するより速い方法はないと思いますが、同時に行うことはできます。

于 2013-10-15T20:02:46.467 に答える