string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
public void unzip(String zFile)
{
Ionic.Zip.ZipFile zip = Ionic.Zip.ZipFile.Read(zFile);
zip.ExtractProgress += new EventHandler<ExtractProgressEventArgs>(zip_ExtractProgress);
zip.ExtractAll(desktop + "\\cache", ExtractExistingFileAction.OverwriteSilently);
zip.Dispose();
zip = null;
}
void zip_ExtractProgress(object sender, ExtractProgressEventArgs e)
{
if (e.EventType == ZipProgressEventType.Extracting_EntryBytesWritten)
{
label2.Text = "debug: " + ((e.EntriesExtracted));
}
else if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry)
{
label3.Text = e.CurrentEntry.FileName;
}
}
private void button1_Click(object sender, EventArgs e)
{
unzip(desktop + "\\cache.zip");
}
當我執行解壓縮button1_Click()我的應用程序凍結。我是C#的新手,我不確定如何解決這個問題,有人可以幫助我嗎?DotNetZip凍結我的應用程序?
我試過使用後臺工作,但它一直說我的線程不安全。我該如何反擊?我讀過這個:http://msdn.microsoft.com/en-us/library/ms171728(v=VS.100).aspx但它不適合我。我一定是做錯了。 – Kyle 2011-01-08 15:28:01
您可能直接從DoWork事件hander方法中更新UI。而是從連接到ProgressChanged的方法中更新您的UI,並使用backgroundWorker.ReportProgress()報告進度。您可以將您需要的任何對象從工作方法傳遞給ProgressChanged。 – tomfanning 2011-01-08 15:31:11