我有一个网页,是我公司的网站监控工具。基本上,它从数据库中提取150个IP地址的列表,并检查是否为它们加载了网页。这需要大约15分钟才能加载,我希望它能够加载列表并逐一进行,并使用文本或图标更新状态。
这是我的功能块,任何方式来解决这个问题或帮助我达到我需要达到的目的?
Function SiteMonitorResults(ByVal WebAddress As String)
Try
'Code Example
Dim httpReq As HttpWebRequest = DirectCast(WebRequest.Create(WebAddress), HttpWebRequest)
httpReq.AllowAutoRedirect = False
Dim httpRes As HttpWebResponse = DirectCast(httpReq.GetResponse(), HttpWebResponse)
' Close the response.
httpRes.Close()
' Code for NotFound resources goes here.
If httpRes.StatusCode = HttpStatusCode.OK Then
Return "Online"
Else
Return "Offline"
End If
Catch ex As Exception
Return "Unknown"
End Try
End Function
答案 0 :(得分:1)
基本上,我会使用System.Threading.Tasks和System.Net.Http这样做。 (对不起C#代码)
我遗漏了try catch以获取可读性,但它们是必需的,否则代码将在第一个DNS问题上崩溃(例如)
public string CheckAddresses(List<string> addresses)
{
List<string> result = new List<string>();
List<Task> tasks = new List<Task>();
addresses.ForEach(address =>
{
var task = new HttpClient().GetAsync(address).ContinueWith(
res => result.Add(String.Format("{0} : {1}", address, res.Result.IsSuccessStatusCode)));
tasks.Add(task);
});
Task.WaitAll(tasks.ToArray());
return string.Join(", ", result.ToArray());
}
希望这会有所帮助