2011-12-11 62 views
0

我想爲我的程序做一個下載管理器。但是當我運行這個代碼時,它給了我消息框中的「下載入門」,但就是這樣。我沒有下載任何文件或進度條更改?有誰知道爲什麼?VB.net Webclient.DownloadFileAsync不下載

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 
+0

相關的主題 - http://stackoverflow.com/questions/2826190/does-webclient-openfileasync-fire-downloadprogresschanged – adatapost

回答

2

DownloadProgressChanged方法被調用在不同的線程比開始下載的一個。在這個回調裏面,你似乎在操縱一些GUI元素:ProgressBar1.Value。您不應該在不同於創建它們的線程上操作GUI元素,否則您可能會遇到異常。根據您正在處理的應用程序的類型,在GUI線程上編組調用的方法有很多種。例如在WinForms中,您應該使用Control.BeginInvoke方法。在WPF和Silverlight中,相當於Dispatcher.BeginInvoke

+0

感謝您的答覆...但我不明白對不起。你能舉個例子嗎? :) 謝謝。我只是在一個普通的Form項目上工作,我只需要爲我的遊戲服務器配置程序 – Kuzon

+2

@Kuzon下載一個.jar文件,如果您正在進行WinForms/WPF開發,那麼您應該明確瞭解這個問題。這裏有一個很好的博客文章,詳細解釋:http://weblogs.asp.net/justin_rogers/pages/126345.aspx –

+0

哦,男人......這是一個觸摸超過我的水平XD我是一個自學14歲的人。 ..我真的很掙扎,我想我現在只會放棄這個想法,我無法繞過這個atm :(謝謝你的幫助......我甚至不知道WinForms/WPF開發意味着......我只知道進入VB.net並點擊表單應用程序......我很困惑XD – Kuzon