为了账号安全,请及时绑定邮箱和手机立即绑定

WebClient 下载后正在使用的文件

WebClient 下载后正在使用的文件

C#
蝴蝶不菲 2022-01-09 14:41:56
我已经下载了一个文件,并在这样做后尝试根据其大小将其删除,但是,它说该文件正在使用中。WebClient wc = new WebClient();wc.DownloadFileAsync(new Uri(sb.ToString()), sbFileLocation.ToString()); if (new FileInfo(sbFileLocation.ToString()).Length == 0)            {                File.Delete(sbFileLocation.ToString());            }如您所见, File.Delete 引发异常,说明文件正在使用中。有什么方法可以关闭然后删除吗?
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

下载文件异步(Uri、字符串、对象)

将具有指定 URI 的资源下载到本地文件。此方法不会阻塞调用线程。

这意味着文件可能(或可能不会)在您调用之前完全下载File.Delete(sbFileLocation.ToString());。这是典型的竞争条件,完全解释了您的错误。

此方法下载地址参数中指定的 URI 处的资源。下载成功完成后,下载的文件在本地计算机上名为 fileName。该文件是使用从线程池中自动分配的线程资源异步下载的。要在文件可用时接收通知,请将事件处理程序添加到 DownloadFileCompleted 事件。

您需要使用DownloadFileCompleted事件、同步WebClient.DownloadFile方法或await基于任务的WebClient.DownloadFileTaskAsync方法


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 265 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号