验证重定向实现
本文关键字:实现 重定向 验证 | 更新日期: 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