2017-11-02 21 views
0

全身私は助けが必要です、ホストから私のExcelファイルをidowloaded、ファイルはEMPTY(0k)です。この単純なコードを使用しました:vb.netのFTPサーバー(LAN/IPアドレス)からファイルをダウロードする方法

'on event click 
Dim address As String = "ftp://172.xx.xx.x/C:/aero_mes/A_0101.xls" 
Dim locadress As String = "C:/bdcrq/A_0101.xls" 
Try 
    download = New WebClient 
    download.DownloadFileAsync(New Uri(address), locadress) 
Catch ex As Exception 
    MsgBox(ex.Message) 
End Try 
+1

'DowbloadFileAsync'を呼び出す場合、あなたは明らかに' DownloadFileCompleted'を処理する必要があります。 – jmcilhinney

答えて

1

非同期方式を使用しています。終了するタイミングを知るには、イベントハンドラが必要です。この例を使用し、コードに基づいているので、ニーズに合わせて変更してください。

Sub DownloadFile() 
      Dim address As String = "http://ftp.redhat.com/redhat/cdk/3.1.1/en/source/MD5SUM" 
      Dim locadress As String = "C:\dump\MD5SUM" 
      Dim download As WebClient 
      Try 
       download = New WebClient 
       download.DownloadFileAsync(New Uri(address), locadress) 
       AddHandler download.DownloadFileCompleted, AddressOf FinishDownload 
      Catch ex As Exception 
       MsgBox(ex.Message) 
      End Try 
     End Sub 


     Sub FinishDownload(sender As Object, e As AsyncCompletedEventArgs) 
      Try 

       ' If the request was not canceled and did not throw 
       ' an exception, display the resource. 
       If e.Cancelled = False AndAlso e.Error Is Nothing Then 

       End If 
      Catch ex As Exception 
       MsgBox(ex.Message) 
      End Try 
     End Sub 
+0

Chilzy、あなたは私の生命を救ってくれてありがとう。 –

0

私はChillzyの答えを好きですが、選択肢はただDownloadFileを(使用する場合)の代わりに、DownloadFileAsync()

DownloadFileAsyncは、バックグラウンドでダウンロードを開始します、あなたはChillzyがに提案するもののような何かをしなければなりませんそれが完了したときに通知を得る。

ダウンロードファイルは完了するまで戻ってこないので、ずっと簡単です。

DownloadFileの欠点は、WinForms UIのフォアグラウンドスレッドで、ファイルがダウンロードされている間にUIイベントを処理できないということです。時間がかかり過ぎると、恐ろしい「応答しない」白い画面が表示されます。

Chillzyの回答のも​​う1つの利点は、ProgressBarを更新し、ProgressBarを更新するためにDownloadProgressChangedイベントハンドラを追加できることです。

関連する問題