webclient 下载100M大的文件出问题
我用webclient.downloadasync下载一个100M大的文件出了问题程序代码如下:
Dim waiter As System.Threading.AutoResetEvent
Private Sub DownloadFileCallback2(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
If Not e.Cancelled And e.Error Is Nothing Then
Debug.WriteLine("下载完成!")
waiter.Set()
End If
End Sub
Private Sub DownloadProgressCallback(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
Console.WriteLine("下载进度" & e.ProgressPercentage)
End Sub
Sub ftpget(ByVal address As String, ByVal fn As String)
waiter = New System.Threading.AutoResetEvent(False)
Dim ftpclient As New WebClient
Dim handler As AsyncCompletedEventHandler
Try
Dim ftpuri As New System.Uri(address)
handler = AddressOf DownloadFileCallback2
AddHandler ftpclient.DownloadFileCompleted, handler
AddHandler ftpclient.DownloadProgressChanged, AddressOf DownloadProgressCallback
ftpclient.DownloadFileAsync(ftpuri, fn, waiter)
waiter.WaitOne()
Catch ex As System.Net.WebException
Console.WriteLine("Not find file" & ex.Message)
End Try
End Sub
下载过程中DownloadProgressChanged事件一直正常,进度一直到100%,但是 DownloadFileCompleted不发生,线程停止不动。 把下载的文件换成26M的文件则DownloadFileCompleted返回正常,线程能正常结束。
请教各位大侠怎么办? --------------------编程问答-------------------- waiter.WaitOne()要拿掉 --------------------编程问答-------------------- waiter.WaitOne()拿掉后,只下载了一个0KB的文件,就结束了 --------------------编程问答-------------------- 我下载1M以内的小文件,去掉waiter.WaitOne()也可下载下来。
我用这段程序在局域网内下载100M以上的文件也可以正常运行,我就不明白了
补充:.NET技术 , VB.NET