0

我想添加process bar压缩SevenZipSharp文件/文件夹的时间。

我写了类似的东西:(查看评论

private void buttonCompress_Click(object sender, EventArgs e)
    {

        SevenZip.SevenZipCompressor.SetLibraryPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"SevenZipSharp.dll"));
        if (IntPtr.Size == 8) //x64
            SevenZip.SevenZipExtractor.SetLibraryPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"7z64.dll"));
        else //x86
        SevenZip.SevenZipExtractor.SetLibraryPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"7z.dll"));


compressor.Compressing += new EventHandler<ProgressEventArgs>(compressor_Compressing); // <-- Handler for progressBar
...
...
...

和:Void_progressBar

void compressor_Compressing(object sender, ProgressEventArgs e)
    {   
      this.Invoke(new MethodInvoker(delegate { progressBar1.Value = e.PercentDone;}));  
      //i tired this too: this.Invoke(new MethodInvoker(delegate {compressor_Compressing(sender, e); }));
    }

但是,正如您可能猜到的那样,它不起作用。

编辑:

好的,现在我添加了:

void compressor_Compressing(object sender, ProgressEventArgs e)
    {
        if(InvokeRequired)   // <-- not necessary in this case
        {
            Thread.Sleep(10);   //<-- this is the key to run progressBar
            this.Invoke((new MethodInvoker(delegate { progressBar1.Value = e.PercentDone; })));
     }

ProcessBar 启动程序冻结约 97%-98% 并且没有任何反应。我想我必须创造新的Thread。有人可以帮我吗?

4

0 回答 0