我在解壓文件時遇到了一些問題。一切正常進展條輸出和提取。但是當它運行時,UI會凍結。我嘗試過使用Task.Run()
,但是它並不能很好地處理進度條。或者,也許我只是沒有正確使用它。C#使用sevenzipsharp進行解壓縮並更新無UI凍結的進度欄
有什麼建議嗎?
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);
}
您正在運行的主線程上的一切讓進度條工作要麼你需要使用後臺輔助類或展示如何使用進度對象創建自己的線程 – Krishna