1

会社のサイト監視ツールである Web ページがあります。基本的に、データベースから 150 個の IP アドレスのリストを取得し、それらの Web ページが読み込まれるかどうかを確認します。これは読み込みに約 15 分かかります。リストを読み込んで 1 つずつ移動し、ステータスをテキストまたはアイコンで更新したいと思います。

これが私の関数ブロックです。これをスレッド化する方法、または必要なものに到達するのに役立つ方法はありますか?

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 に答える