【发布时间】:2018-05-10 16:02:37
【问题描述】:
我有一个“工作列表样式”应用程序,用户从列表中选择一个 zip 文件,然后单击一个按钮将其解压缩到本地文件夹。
以下是所用代码的摘录:
ZipFile zip = Ionic.Zip.ZipFile.Read(sourcePackage);
zip.ExtractAll(destination);
zip.Dispose();
第一次一切正常,但如果用户尝试再次解压缩同一个文件(即使在解压缩了其他文件之后),速度太快,并且在目标文件夹中创建的所有内容看起来像一个临时文件(例如'x2hiex0z.pj0')。
就好像 Ionic.Zip.ZipFile.Read 正在创建一个以前解压缩文件名的缓存。
如果是这样,我该如何清除它以便我可以强制它再次解压缩文件?
【问题讨论】:
-
附带说明,当您的某些代码涉及
IDisposable(如ZipFile)时,最好使用using子句。 (并且当到达 using 块的末尾时,它会自动为您调用 Dispose()) -
另外,如果您调试您的应用程序,是否会引发任何异常,如以下答案中所建议的那样?如果是,请提供错误信息。
-
我得到一个异常“这个操作已经调用了 OperationCompleted 并且进一步的调用是非法的。”。所以我只需要清除缓存的内容吗?
-
sourcePackage是流吗?如果是这样,您是否每次都打开和关闭流?如果没有,您可能需要倒带。 -
没有流,只有文件名。 sourcePackage = 'c:\path-to-the.zip'