每次我用我的程序解压缩时,我的程序都会挂起,甚至不会给我一条消息。
我的代码:
public void CreateZipContentFolder(List<String> zips, string destinationPath) {
if (zips.Any()) {
MyLog.WriteToLog("Unzipping Zip files to: " + destinationPath, MyLog.Messages.Info);
foreach (string zip in zips) {
string dirName = Path.Combine(destinationPath, Path.GetFileNameWithoutExtension(zip));
//using (ZipArchive archive = ZipFile.OpenRead(zip)) {
// foreach (ZipArchiveEntry entry in archive.Entries) {
// if (entry.FullName.EndsWith("/")) {
// ZipFile.ExtractToDirectory(zip, destinationPath);
// break;
//} else if (!Directory.Exists(dirName)) {
Directory.CreateDirectory(dirName);
ZipFile.ExtractToDirectory(zip, dirName);
// break;
//}
//}
//}
}
} else { MyLog.WriteToLog("No Zip folders found.", MyLog.Messages.Warning); }
}
答案 0 :(得分:0)
我猜你的程序会挂起,因为你调用的方法是阻塞的。 这意味着该方法正在进行工作(提取),cpu的使用率应该很高。
让您的应用程序仍然响应的选项是调用线程内的ZIP方法。因此,您的UI仍然可以响应,并且看起来您的应用程序不会崩溃。