验证重定向实现

本文关键字:实现 重定向 验证 | 更新日期: 2023-09-27 18:27:32

假设我在列表中有20个url,有人能帮助我在最短的时间内获得所有这20个url的响应吗。

    XmlNodeList lst = doc.SelectNodes("//match");
    for (int i = 0; i < lst.Count; i++)
    {
              XmlNode node = lst[i];
              string URL = lst[i].InnerText;
              var request = (HttpWebRequest)WebRequest.Create(URL);
              HttpWebResponse response = (HttpWebResponse)request.GetResponse();
              string responseURI = response.ResponseUri.ToString();
               //XLWorkbook workbook = new XLWorkbook();
               //DataTable table = GetYourTable();
               //workbook.Worksheets.Add(table);
    }

上面的方法花费了太多时间,我不擅长"线程"概念,所以请帮助我。

验证重定向实现

尝试Parallel.ForEach/For.

using System.Threading;
using System.Threading.Tasks;
Parallel.For(0, lst.Count, index =>
{
          string URL = lst[index].InnerText;
          var request = (HttpWebRequest)WebRequest.Create(URL);
          HttpWebResponse response = (HttpWebResponse)request.GetResponse();
          string responseURI = response.ResponseUri.ToString();
});

发件人https://msdn.microsoft.com/en-us/library/dd460720(v=vs.110).aspx

ForEach循环的工作原理与For循环类似。源集合是分区,并且基于系统环境。系统上的处理器越多并行方法运行。

您可以使用它来填充一个包含响应的列表并进一步处理它,或者如果您想在GUI上输入,则可以调用invoke()到UI控件,以在它们各自的消息循环中调度它。

附带说明:XmlNodeList公开了一个枚举器,因此不需要[]运算符访问它;foreach将为您提供所有子元素。

编辑:似乎C#无法将XmlNodeList枚举器解析为XmlNode。老实说,我不知道为什么,但你可以使用Parallel