Использование WebClient для загрузки файла, но возможность получить информацию о загрузке в vb.net - PullRequest
0 голосов
/ 23 октября 2009
Imports System.Net
Public Class DownloadStuff
    Dim downloader As New WebClient()
    Private Sub Progress_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Progress.Validated
        AddHandler downloader.DownloadProgressChanged, AddressOf DownloadChangedHandler

        Dim uri As New Uri("http://www.example.com/example.txt")
        downloader.DownloadFileAsync(uri, "C:\example.txt")
    End Sub
    Private Sub DownloadChangedHandler(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
        Progress.Maximum = CInt(e.TotalBytesToReceive)
        Progress.Value = CInt(e.BytesReceived)
        Application.DoEvents()
    End Sub
End Class

Это мой код, но событие DownloadProgressChanged НИКОГДА не запускается. (Я использую пример URL здесь, но это тот же элемент)

Что я делаю не так? Прогресс - это ПрогрессБар.

Это на VB.net.

В MSDN они упоминали что-то о переопределении GetWebRequest, но я понятия не имею, как это сделать или что делать.

ОБНОВЛЕНИЕ: Все еще нет прогресса, я просто не могу понять, как заставить обработчик срабатывать.

1 Ответ

1 голос
/ 23 октября 2009

Попробуйте это:

Sub Main()

    Dim client As WebClient = New WebClient()
    AddHandler client.DownloadProgressChanged, AddressOf DownloadProgressCallback
    client.DownloadFileAsync(New Uri("..."), "data.txt")

End Sub

Private Sub DownloadProgressCallback( _
    ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)

    Console.WriteLine(e.ProgressPercentage)

End Sub

Каждый раз, когда я вижу AddHandler и Handles, я чувствую головокружение.

...