我已经下载了一个文件,并尝试根据其大小将其删除,但是它表示该文件正在使用中。
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引发一个异常,指出该文件正在使用中。
是否可以通过某种方式将其关闭然后删除?
答案 0 :(得分:4)
DownloadFileAsync(Uri, String, Object)
将具有指定URI的资源下载到本地文件。这个 方法不会阻止调用线程。
这意味着文件可能会(或可能不会)完全下载,然后再调用File.Delete(sbFileLocation.ToString());
。这是典型的比赛情况,完全可以解释您的错误。
此方法将资源下载到URI中指定的URI处。 地址参数。下载成功完成后, 下载的文件在本地计算机上名为fileName。该文件是 使用以下线程资源异步下载 从线程池自动分配。 要接收 文件可用时通知,将事件处理程序添加到 DownloadFileCompleted事件。
您需要使用DownloadFileCompleted
事件,同步WebClient.DownloadFile
方法或await
基于任务的WebClient.DownloadFileTaskAsync
方法