C# Ionic.Zip 进度条作为后台工作者

Posted

技术标签:

【中文标题】C# Ionic.Zip 进度条作为后台工作者【英文标题】:C# Ionic.Zip progressbar as background worker 【发布时间】:2011-05-18 15:36:56 【问题描述】:

我得到以下代码:

        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 作为后台工作人员,但是当我不知道如何将函数转换为后台工作人员函数时,因为 ExtractProgress 函数需要 ExtractProgressEventArgs e 而 backgroundworker_dowork 函数需要 DoWorkEventArgs e。

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

【问题讨论】:

【参考方案1】:

简单:只需所有button1_Click 中的代码放入一个方法中,并让button1_ClickBackgroundWorker 中运行该方法。试一试,看看效果如何。

【讨论】:

在那种情况下,我不知道该怎么做:/

以上是关于C# Ionic.Zip 进度条作为后台工作者的主要内容,如果未能解决你的问题,请参考以下文章

Windows 窗体嵌入式进度条后台工作者

c#中的Web进度条

VB.NET 中带有后台工作者的字幕进度条

C#使用SignalR实现进度条

BackgroundWorker的使用一二(可视化编程,开始后台工作,报告进度,取消后台工作等)

Xamarin Android C# 中的进度条和线程