【发布时间】:2013-11-22 19:27:40
【问题描述】:
我想知道为什么这段代码不起作用,它没有抛出任何异常,文件被下载,只是事件没有。
我已经尝试过使用 webclient 上传 EventArgs 并且它们工作正常,但下载 EventArgs 没有。
Private WithEvents client As New System.Net.WebClient()
ftp.DownloadFile(client, "/inputfile.ext", "c:\targetfile.ext")
Private Sub Client_DownloadProgress(ByVal sender As WebClient,
ByVal e As DownloadProgressChangedEventArgs) _
Handles client.DownloadProgressChanged
MsgBox(e.ProgressPercentage & "%")
End Sub
Private Sub Client_DownloadCompleted(ByVal sender As WebClient,
ByVal e As DownloadDataCompletedEventArgs) _
Handles client.DownloadFileCompleted
MsgBox(e.Result.ToString)
End Sub
ftp对象DownloadFile方法是这样的:
Public Sub DownloadFile(ByRef DownloadClient As WebClient,
ByVal filepath As String,
ByVal localfilepath As String,
Optional ByVal Asynchronous As Boolean = False)
If filepath.StartsWith("/") Then
filepath = Me.host & filepath
Else
filepath = Me.host & "/" & filepath
End If
With DownloadClient
.Credentials = New NetworkCredential(Me.user, Me.pass)
If Asynchronous Then
.DownloadFileAsync(New Uri(filepath), localfilepath)
Else
.DownloadFile(New Uri(filepath), localfilepath)
End If
End With
End Sub
【问题讨论】:
-
@K3rnel31 感谢文档,但对我来说有点不清楚(奇怪),那么这意味着什么事件仅由 DownloadFileAsync webclient 方法引发?我看到是的,它们是通过这种方法提出的,但这给我带来了两个问题。 1. 我不明白为什么只有异步才能引发这些事件。 2. 我在事件处理程序
can't convert type 'System.ComponentModel.AsyncCompletedEventArgs' to type 'System.Net.DownloadDataCompletedEventArgs'收到此错误。 PS:对不起我的英语。 -
好的,我已经将方法签名更改为
byval e as AsyncCompletedEventArgs,但是在引发下载事件时它会抛出“对象未设置引用”异常,这仍然没有解决。 -
@ElectroStudios 好的,等一下,让我帮你解决这个问题......
-
@K3rnel31 最后我可以处理异步下载,但我需要处理正常下载的过程,你能告诉我这是否可能或只能处理异步下载?跨度>