2012-04-04 2 views
0

次のVB.Netシンプルコードを使用してFTPでファイルをアップロードすると、WebClient.CancelAsync()の呼び出しによって実際にアップロードがキャンセルされることはありません。WebClientでアップロードをキャンセルしますか?

は、誰かが理由を知っているか、そして何がこれについて行うことができますか?

Private Sub UploadProgressChanged(ByVal sender As Object, ByVal e As System.Net.UploadProgressChangedEventArgs) 
    'TO-DO: Why is pbar empty? 
    ProgressBar1.Value = e.ProgressPercentage 

    Label1.Text = e.BytesSent & " bytes sent" 
End Sub 

Private Sub UploadFileCompleted(ByVal sender As Object, ByVal e As System.Net.UploadFileCompletedEventArgs) 
    MessageBox.Show("Done!") 
    Button1.Text = "Upload" 
    ProgressBar1.Value = 0 
End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim client As New WebClient 

    If Button1.Text = "Cancel" Then 
     'TO-DO: Doesn't actually cancel upload! 
     client.CancelAsync() 

     Button1.Text = "Upload" 
     ProgressBar1.Value = 0 
    Else 
     Button1.Text = "Cancel" 

     Const MYFILE = "big.file.bin" 
     Const LocalFile As String = "C:\" & MYFILE 

     Dim RemoteFile As String = "ftp://upload.acme.com/" & MYFILE 

     client.Credentials = New NetworkCredential("anonymous", "test") 
     client.Proxy = Nothing 

     AddHandler client.UploadFileCompleted, AddressOf UploadFileCompleted 
     AddHandler client.UploadProgressChanged, AddressOf UploadProgressChanged 

     ProgressBar1.Maximum = 100 

     Try 
      client.UploadFileAsync(New Uri(RemoteFile), LocalFile) 
     Catch ex As Exception 
      MsgBox(ex.ToString) 
     End Try 

     client.Dispose() 
    End If 
End Sub 

ありがとうございます。

答えて

0

私はVBを自分で使用していないが、あなたは間違ったクライアント上client.cancelAsync()を呼び出しているようにそれは私には見えます。

あなたは新しいクライアントにアップロード/キャンセルボタンを押すたびに作っています。

最初に開始したクライアントをキャンセルする場合は、click_handlerの外部でインスタンス化する必要があります。

また、なぜあなたは、クライアントがキャンセルする必要があるかどうかをチェックするために、ボタンのラベルを使用していますか?

あなたが行うことができるのは、クライアント.IsBusy ...

+0

私はちょうどサンプルを探して、上記を見つけました。情報をありがとう、私は調査します。 – Gulbahar

関連する問題