我在提取文件时遇到了一些问题。一切都适用于进度条输出和提取。但是当它运行时,用户界面会冻结。我试过使用Task.Run()
,但它并不能很好地与进度条配合使用。或者,也许我只是没有正确使用它。
有什么建议么?
private void unzip(string path)
{
this.progressBar1.Minimum = 0;
this.progressBar1.Maximum = 100;
progressBar1.Value = 0;
this.progressBar1.Visible = true;
var sevenZipPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), Environment.Is64BitProcess ? "x64" : "x86", "7z.dll");
SevenZipBase.SetLibraryPath(sevenZipPath);
var file = new SevenZipExtractor(path + @"\temp.zip");
file.Extracting += (sender, args) =>
{
this.progressBar1.Value = args.PercentDone;
};
file.ExtractionFinished += (sender, args) =>
{
// Do stuff when done
};
//Extract the stuff
file.ExtractArchive(path);
}