C# 同时等待几个Web响应

C# 同时等待几个Web响应,c#,asynchronous,task,webrequest,webresponse,C#,Asynchronous,Task,Webrequest,Webresponse,我想等待所有的回应一次 for (int i = 0; i < N; i++) { request = (HttpWebRequest)WebRequest.Create(url[i]); // init other request headers... // get response using (HttpWebResponse response = await Web.GetHttpWebResponseAsync(request)) {

我想等待所有的回应一次

for (int i = 0; i < N; i++)
{
    request = (HttpWebRequest)WebRequest.Create(url[i]);
    // init other request headers...

    // get response
    using (HttpWebResponse response = await Web.GetHttpWebResponseAsync(request))
    {
        string strResponse = Web.ConvertHttpWebResponseToString(response, System.Text.Encoding.GetEncoding("utf-8"));
    }
}
for(int i=0;i
它工作,但在加载i=0的数据时,循环的第二步等待(长时间)。我希望所有N个请求在一次内等待。我试试这个:

List<Task<HttpWebResponse>> ts = new List<Task<HttpWebResponse>>();
for (int i = 0; i < N; i++)
{
    request = (HttpWebRequest)WebRequest.Create(url[i]);
    // init other request headers...

    // save task in list
    ts.Add(Web.GetHttpWebResponseAsync(request));
}

Task.WaitAll(ts.ToArray());

for (int i = 0; i < N; i++)
{
    string strResponse = Web.ConvertHttpWebResponseToString(ts[i].Result, System.Text.Encoding.GetEncoding("utf-8")); // <== but I get error access to disposed stream.
}
List ts=newlist();
对于(int i=0;istring strResponse=Web.ConvertHttpWebResponseToString(ts[i].Result,System.Text.Encoding.GetEncoding(“utf-8”);//我设置了System.Net.ServicePointManager.DefaultConnectionLimit=10,但没有帮助第二次尝试有什么问题吗?您不需要
ts[ts.Count-1].Start()
,任务已经启动。正确。我修复了它,但它没有帮助
Web.ConvertHttpWebResponseToString
I添加Web.ConvertHttpWebResponseToString内容
public static string ConvertHttpWebResponseToString(HttpWebResponse response, Encoding encoding)
{
    string data = "";
    System.IO.Stream responseStream = response.GetResponseStream(); // <-- error on this
    using (System.IO.StreamReader reader = new StreamReader(responseStream, encoding))
    {
        data += reader.ReadToEnd();
    }
    responseStream.Close();
    return data;
}
public static async Task<string> GetRespStr(HttpWebRequest request)
{
    string strResponse = null;
    using (HttpWebResponse response = await Web.GetHttpWebResponseAsync(request))
    {
        strResponse = Web.ConvertHttpWebResponseToString(response, System.Text.Encoding.GetEncoding("utf-8"));
    }
    return strResponse;
}

void main()
{
    for (int k = 0; k < cnt; k++)
    {
        request = (HttpWebRequest)WebRequest.Create(href[k]);
        tasks.Add(GetRespStr(request));
    }

    Task.WaitAll(tasks.ToArray());

    for (int k = 0; k < cnt; k++)
    {
        result.Add(tasks[k].Result);
    }
}