Imports System Imports System.Net Imports System.Threading Class Class1 Shared Sub top(ByVal i As Integer) Dim url As New Uri("http://***/top.txt") Dim downfile As String = "./top.txt" Dim wc As New WebClient() wc = New System.Net.WebClient() 'イベントハンドラの作成 AddHandler wc.DownloadProgressChanged, _ AddressOf downloadClient_DownloadProgressChanged AddHandler wc.DownloadFileCompleted, _ AddressOf downloadClient_DownloadFileCompleted wc.DownloadFileAsync(url, downfile) Console.WriteLine("ダウンロード完了:{0}", i) End Sub Shared Sub ini(ByVal i As Integer) Dim url As New Uri("http://***/top.txt") Dim wc As New WebClient() Dim downfile As String = "./top.txt" wc = New System.Net.WebClient() 'イベントハンドラの作成 AddHandler wc.DownloadProgressChanged, _ AddressOf downloadClient_DownloadProgressChanged AddHandler wc.DownloadFileCompleted, _ AddressOf downloadClient_DownloadFileCompleted wc.DownloadFileAsync(url, downfile) End Sub Private Sub downloadClient_DownloadProgressChanged(ByVal sender As Object, _ ByVal e As System.Net.DownloadProgressChangedEventArgs) Console.WriteLine( _ "{0}% ({1}byte 中 {2}byte) ダウンロードが終了しました。", _ e.ProgressPercentage, e.TotalBytesToReceive, e.BytesReceived) End Sub Private Sub downloadClient_DownloadFileCompleted(ByVal sender As Object, _ ByVal e As System.ComponentModel.AsyncCompletedEventArgs) If Not (e.Error Is Nothing) Then Console.WriteLine("エラー:{0}", e.Error.Message) Else If e.Cancelled Then Console.WriteLine("キャンセルされました。") Else Console.WriteLine("ダウンロード完了") End If End If End Sub ' 別スレッドで実行されるメソッド Shared Sub worker(ByVal i As Object) top(CType(i, Integer)) End Sub Shared Sub main() ' 最大同時接続数 ServicePointManager.DefaultConnectionLimit = 2 ' デフォルト Dim t(9) As Thread Console.WriteLine("-- 事前ダウンロード開始 --") top(-1) ' 出力:ダウンロード完了:-1 Console.WriteLine("-- 一斉ダウンロード開始 --") For i As Integer = 0 To 9 t(i) = New Thread(AddressOf worker) t(i).Start(i) Next ' 出力例: ' ダウンロード完了:0 ' ダウンロード完了:1 ' ダウンロード完了:4 ' ダウンロード完了:6 ' ダウンロード完了:9 ' ダウンロード完了:8 ' ダウンロード完了:3 ' ダウンロード完了:5 ' ダウンロード完了:7 ' ダウンロード完了:2 End Sub End Class
'14,29行目 AddressOf downloadClient_DownloadProgressChanged '16,31行目 AddressOf downloadClient_DownloadFileCompleted