1

我有一个网页,它是我公司的网站监控工具。基本上,它从数据库中提取 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
4

1 回答 1

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());
    }

希望这会有所帮助

于 2012-10-04T15:41:48.277 回答