C#Ionic.Zip progressbar作为背景工作者

时间:2010-12-01 17:33:48

标签: c# .net ionic-zip

我收到了以下代码:

        string path = Environment.CurrentDirectory;
    private void button1_Click(object sender, EventArgs e)
    {
        using (ZipFile zip = ZipFile.Read("Fringe.S03E07.HDTV.XviD-LOL.zip"))
        {
            zip.ExtractProgress += ExtractProgress;
            foreach (ZipEntry file in zip)
            {
                file.Extract(path+"\\temp", ExtractExistingFileAction.OverwriteSilently);
            }
        }  

    }

    public void ExtractProgress(object sender, ExtractProgressEventArgs e)
    {
        if (e.EventType == ZipProgressEventType.Extracting_EntryBytesWritten)
        {
            //bytes transfered of current file
            label4.Text = e.BytesTransferred.ToString();
        }
        else if (e.EventType == ZipProgressEventType.Extracting_BeforeExtractEntry)
        {
            //filename of current extracted file
            label2.Text = e.CurrentEntry.FileName;
        }
    }

当我点击按钮时,表单卡住了。我想让ExtractProgress成为后台工作者,但是当我不知道如何将函数转换为backgroundworker函数时,因为ExtractProgress函数需要ExtractProgressEventArgs e而backgroundworker_dowork函数需要DoWorkEventArgs e。

如果有人可以帮助我转换它或者给我另一个解决方案那就太棒了!

1 个答案:

答案 0 :(得分:1)

简单:只需将所有 {/ 1}}中的代码放入方法中,然后button1_Clickbutton1_Click中运行该方法。试一试,看看它是如何运作的。