【发布时间】:2018-01-30 23:16:05
【问题描述】:
我已使用此代码从网络服务器下载了一个 zip 文件:
client.DownloadFileAsync(url, savePath);
然后,在另一种方法中,在同一会话期间,我尝试使用此方法提取文件:
ZipFile.ExtractToDirectory(zipPath, extractDir);
这会引发错误:
System.IO.IOException: 'The process cannot access the file
'C:\ProgramData\ZipFile.zip' because it is being used by another process.'
如果我重新启动程序然后解压缩文件(不重新下载),它会毫无问题地解压缩。
这对我来说没有多大意义,因为Webclient client 位于另一个方法中,因此应该被销毁......
除了上面提供的 2 行代码之外,没有其他方法可以访问该文件。
有没有办法释放文件?
【问题讨论】:
-
请显示更完整的代码示例(例如,下载文件的方法、提取文件的方法、它们各自的调用方式以及
WebClientif 的任何初始化之间的真实关系任何)。 -
DownloadFile而不是DownloadFileAsync,它解决了问题吗?如果是,则需要添加 await 关键字,并且 zip 提取仅在下载结束后发生。
标签: c# asp.net visual-studio webclient ioexception