VB.net Webclient.DownloadFileAsync不下载

时间:2011-12-11 10:02:20

标签: vb.net webclient web-scraping downloadfileasync

我正在尝试为我的程序创建一个下载管理器。但是当我运行这段代码时,它会给我一个消息框说“Download Started”,但就是这样。我没有下载任何文件或进度条更改?有谁知道为什么?

Public Class frmDownloader

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WebClient1.DownloadFileAsync(New Uri("https://s3.amazonaws.com/MinecraftDownload/launcher/Minecraft_Server.exe"), "C:\hi.exe")
        MsgBox("download started")
    End Sub

    Private Sub WebClient1_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles WebClient1.DownloadProgressChanged
        ProgressBar1.Value = e.ProgressPercentage
        MsgBox("Download Progress Changed")
    End Sub


End Class

1 个答案:

答案 0 :(得分:2)

在与开始下载的线程不同的线程上调用DownloadProgressChanged方法。在这个回调中你似乎在操纵一些GUI元素:ProgressBar1.Value。您永远不应该在与创建它们的线程不同的线程上操作GUI元素,否则您可能会遇到异常。根据您正在使用的应用程序类型,有不同的方法来编组GUI线程上的调用。例如,在WinForms中,您应该使用Control.BeginInvoke方法。在WPF和Silverlight中,等效的是Dispatcher.BeginInvoke