0

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

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
4

1 回答 1

2

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

于 2011-12-11T10:05:19.493 回答