我正在验证一组网址。当URL计数达到30,000时,程序的性能会下降。
Parallel.ForEach(urilist, line =>
{
if (!IsHttpStatusOk(line.ToString()))
{
listBox1.Items.Add(line.ToString());
}
});
public static bool IsHttpStatusOk(string url)
{
try
{
var request = WebRequest.Create(finalurl) as HttpWebRequest;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36";
request.AllowAutoRedirect = false;
using (var response = request.GetResponse())
return (response as HttpWebResponse).StatusCode == HttpStatusCode.OK;
}
catch (Exception)
{
return false;
}
}
我需要向用户显示无效网址,为此我使用ListBox
。这在一定程度上正常工作,直到无效URL数量超过某个限制。用户界面冻结,CPU使用率高峰和程序变得无响应。
我该如何解决这个问题?该问题也存在于DataGridView
,并且会出现较少数量的网址。