我的应用程序冻结/没有响应

本文关键字:响应 应用程序 冻结 我的 | 更新日期: 2023-09-27 18:15:53

我有这个代码:(我使用DotNetZip库)

    private void ExtractZip(string zipPath)
    {
        ZipFile zip = ZipFile.Read(zipPath);
        string application = "test.exe";
        zip.ExtractAll(Directory.GetCurrentDirectory(), ExtractExistingFileAction.OverwriteSilently);
        ScanApplication(application);
    }
    private void ScanApplication(string application)
    {
        if (File.Exists(application))
        {
            Main mainApp = new Main();
            mainApp.newVersion = FileVersionInfo.GetVersionInfo(application).FileVersion;
            Form2 form2 = new Form2();
            form2.ShowDialog();
            this.Close();
        }
    }

当我点击一个按钮,我的应用程序冻结。我不知道为什么,但是如果我没有调用ScanApplication(application),我的应用程序不会冻结。

为什么会结冰?

我的应用程序冻结/没有响应

当我点击一个按钮,我的应用程序冻结。我不知道为什么,但是如果我没有调用ScanApplication(application),我的应用程序不会冻结。

虽然没有在您发布的代码中显示,但您几乎肯定是从按钮单击事件处理程序中提取ZIP文件。

事件处理程序与UI在同一线程上运行。当它忙于处理ZIP文件时,不能处理其他UI消息。结果,UI将冻结,直到ZIP处理完成。

你可以使用BackgroundWorker或Thread或Task来执行ZIP,这样UI线程就不会被阻塞。