2011-12-11 10 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

応答のおかげ...しかし、私は申し訳ありません。あなたは例を挙げていただけますか? :)ありがとう。私は通常のフォームプロジェクトだけで作業しています。自分のゲームサーバーのコンフィグレーションプログラム – 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

関連する問題