0

以下のコードを使用して Web サイトからの応答を並行して取得していますが、並行して実行される URL は 3 つだけです。一度に 1000 以上の URL を実行する必要があります。これを達成する方法。これについてアドバイスをください。前もって感謝します。

class Program
{
    static void Main(string[] args)
    {
        DateTime dtStartDate = DateTime.Now;
        Parallel.For(0, 4, new ParallelOptions { MaxDegreeOfParallelism = 4 },
      i =>
      {
          var task = MakeAsyncRequest("http://..../Test.aspx", "text/html");
          Console.WriteLine("Got response of {0}", task.Result);
      });
        Console.WriteLine(DateTime.Now.Subtract(dtStartDate).ToString());
        Console.ReadLine();
    }

    public static Task<string> MakeAsyncRequest(string url, string contentType)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.ContentType = contentType;
        request.Method = WebRequestMethods.Http.Get;
        request.Timeout = 20000;
        request.Proxy = null;

        Task<WebResponse> task = Task.Factory.FromAsync(
            request.BeginGetResponse,
            asyncResult => request.EndGetResponse(asyncResult),
            (object)null);

        return task.ContinueWith(t => ReadStreamFromResponse(t.Result));
    }

    private static string ReadStreamFromResponse(WebResponse response)
    {
        using (Stream responseStream = response.GetResponseStream())
        using (StreamReader sr = new StreamReader(responseStream))
        {
            string strContent = sr.ReadToEnd();
            if (strContent != "")
                return "OK";
        }
        return "empty";
    }
}
4

0 に答える 0