DOBON.NETプログラミング道掲示板

No34953 の記事


■34953 / )  複数のPageに分かれる場合のスクレ―ピング
□投稿者/ Wan 一般人(45回)-(2021/11/13(Sat) 17:08:43)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net WindowsForm] 
    分類:[.NET] 

    Webで複数のPageに分かれたデータをWebClientを使用してデータを取得して、それぞれのPage数と合致したTextBox.Nameに表示しようとしています。(今回は、階層的にtaxtBoxのControlが配置しているので、子も検索するコードになっています)I/O待ちが主体の処理なので、Parallelで回すのでは無く、WebClient.OpenReadAsyncで処理するのが最適と思い次のようなコードを書きました。
    Public Class Form1
        Private Sub onBinaryLoad(ByVal sender As Object, ByVal e As OpenReadCompletedEventArgs)
            If Not (e.[Error] IsNot Nothing) OrElse (e.Cancelled) Then
                DirectCast(Me.Controls.Find("TextBox" & e.UserState, True).First, TextBox).Text = New StreamReader(e.Result).ReadToEnd
            End If
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim 変数Max As Integer = 16
            For i = 1 To 変数Max
                Dim TmpWc = New WebClient
                AddHandler TmpWc.OpenReadCompleted, AddressOf onBinaryLoad
                TmpWc.OpenReadAsync(New Uri("https://XXXX&page=" & i), i)
            Next
        End Sub
    End Class
    提示したコードでは、Page数が16と限定していますが、実際は、不定です。
    
    不定数となる全てのPageの読み込みが完了した判断は、どのように行えば宜しいのでしょうか?
    詳しい方、いらっしゃいましたらご指南宜しくお願い致します。
    
    

違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -