以下のコードを使用して 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";
}
}