解压缩大文件会使我的程序关闭

时间:2016-06-16 07:28:35

标签: c# file io zip extract

我有一些代码可以解压缩我的zip文件。我有一个zip文件: Zip file infos

每次我用我的程序解压缩时,我的程序都会挂起,甚至不会给我一条消息。

我的代码:

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); }
    }

1 个答案:

答案 0 :(得分:0)

我猜你的程序会挂起,因为你调用的方法是阻塞的。 这意味着该方法正在进行工作(提取),cpu的使用率应该很高。

让您的应用程序仍然响应的选项是调用线程内的ZIP方法。因此,您的UI仍然可以响应,并且看起来您的应用程序不会崩溃。