webclient 下载100M大的文件出问题

[复制链接]
查看11 | 回复3 | 2021-1-27 06:21:40 | 显示全部楼层 |阅读模式
我用webclient.downloadasync下载一个100M大的文件出了问题
程序代码如下:
DimwaiterAsSystem.Threading.AutoResetEvent
PrivateSubDownloadFileCallback2(ByValsenderAsObject,ByValeAsAsyncCompletedEventArgs)
IfNote.CancelledAnde.ErrorIsNothingThen
Debug.WriteLine("下载完成!")
waiter.Set()
EndIf
EndSub
PrivateSubDownloadProgressCallback(ByValsenderAsObject,ByValeAsDownloadProgressChangedEventArgs)
Console.WriteLine("下载进度"&e.ProgressPercentage)
EndSub
Subftpget(ByValaddressAsString,ByValfnAsString)
waiter=NewSystem.Threading.AutoResetEvent(False)
DimftpclientAsNewWebClient
DimhandlerAsAsyncCompletedEventHandler
Try
DimftpuriAsNewSystem.Uri(address)
handler=AddressOfDownloadFileCallback2
AddHandlerftpclient.DownloadFileCompleted,handler
AddHandlerftpclient.DownloadProgressChanged,AddressOfDownloadProgressCallback
ftpclient.DownloadFileAsync(ftpuri,fn,waiter)
waiter.WaitOne()
CatchexAsSystem.Net.WebException
Console.WriteLine("Notfindfile"&ex.Message)
EndTry
EndSub
下载过程中DownloadProgressChanged事件一直正常,进度一直到100%,但是DownloadFileCompleted不发生,线程停止不动。把下载的文件换成26M的文件则DownloadFileCompleted返回正常,线程能正常结束。
请教各位大侠怎么办?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:21:40 | 显示全部楼层
waiter.WaitOne()要拿掉
回复

使用道具 举报

千问 | 2021-1-27 06:21:40 | 显示全部楼层
waiter.WaitOne()拿掉后,只下载了一个0KB的文件,就结束了
回复

使用道具 举报

千问 | 2021-1-27 06:21:40 | 显示全部楼层
我下载1M以内的小文件,去掉waiter.WaitOne()也可下载下来。
我用这段程序在局域网内下载100M以上的文件也可以正常运行,我就不明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行