web-dev-qa-db-ja.com

C#-複数のWebリクエストを同時に行う方法

私はURLをチェックするコードを記述しましたが、irの動作は非常に遅くなります。たとえば、10個のURLなど、いくつかのURLで同時に動作するようにしたり、少なくともできるだけ高速にしたいです。

私のコード:

Parallel.ForEach(urls, new ParallelOptions {
  MaxDegreeOfParallelism = 10
}, s => {
  try {
    using(HttpRequest httpRequest = new HttpRequest()) {
      httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0";
      httpRequest.Cookies = new CookieDictionary(false);
      httpRequest.ConnectTimeout = 10000;
      httpRequest.ReadWriteTimeout = 10000;
      httpRequest.KeepAlive = true;
      httpRequest.IgnoreProtocolErrors = true;
      string check = httpRequest.Get(s + "'", null).ToString();
      if (errors.Any(new Func < string, bool > (check.Contains))) {
        Valid.Add(s);
        Console.WriteLine(s);
        File.WriteAllLines(Environment.CurrentDirectory + "/Good.txt", Valid);
      }
    }
  } catch {

  }
});
7
Ariel

以下のようにしてみてください。

Parallel.ForEach(urls, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount - 1 }

少なくとも、1を残してすべてのコアが使用されるようにして、マシンのメモリが不足しないようにします。

また、@ KSibコメントを検討してください。

0
Rohit Ramname