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の読み込みが完了した判断は、どのように行えば宜しいのでしょうか?
詳しい方、いらっしゃいましたらご指南宜しくお願い致します。