我已经下载了一个文件,并在这样做后尝试根据其大小将其删除,但是,它说该文件正在使用中。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 的资源下载到本地文件。此方法不会阻塞调用线程。
这意味着文件可能(或可能不会)在您调用之前完全下载File.Delete(sbFileLocation.ToString());
。这是典型的竞争条件,完全解释了您的错误。
此方法下载地址参数中指定的 URI 处的资源。下载成功完成后,下载的文件在本地计算机上名为 fileName。该文件是使用从线程池中自动分配的线程资源异步下载的。要在文件可用时接收通知,请将事件处理程序添加到 DownloadFileCompleted 事件。
您需要使用DownloadFileCompleted
事件、同步WebClient.DownloadFile
方法或await
基于任务的WebClient.DownloadFileTaskAsync
方法
- 1 回答
- 0 关注
- 265 浏览
添加回答
举报
0/150
提交
取消