当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,