C# 我的应用程序冻结/没有响应
我有以下代码:我正在使用DotNetZip库C# 我的应用程序冻结/没有响应,c#,C#,我有以下代码:我正在使用DotNetZip库 private void ExtractZip(string zipPath) { ZipFile zip = ZipFile.Read(zipPath); string application = "test.exe"; zip.ExtractAll(Directory.GetCurrentDirectory(), ExtractExistingFileAction.Overwrite
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();
}
}
当我点击一个按钮,我的应用程序就会冻结。我不知道为什么,但如果我没有调用ScanApplicationapplication,我的应用程序不会冻结
为什么会结冰
当我点击一个按钮,我的应用程序就会冻结。我不知道为什么,但如果我没有调用ScanApplicationapplication,我的应用程序不会冻结
尽管在您发布的代码中没有显示,但几乎可以肯定的是,您正在从按钮单击事件处理程序中提取ZIP文件
事件处理程序与UI在同一线程上运行。当它忙于处理ZIP文件时,无法处理其他UI消息。因此,UI将冻结,直到ZIP处理完成
您可以使用BackgroundWorker、线程或任务来执行ZIP,这样UI线程就不会被阻塞