2010-12-01 13 views
2

ように私は、次のコードを得た:C#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を作成したいが、ExtractProgress関数がExtractProgressEventArgsを必要とし、backgroundworker_dowork関数がDoWorkEventArgsを必要とするため、関数をbackgroundworker関数に変換する方法がわからないときe。

誰かが私にそれを変換したり、私に別の解決策を教えてもらえると助かります。

答えて

1

シンプル:ちょうど方法にbutton1_Clickすべてコードを配置し、そのBackgroundWorkerのメソッドbutton1_Click実行を持っています。それを試して、それがどのように動作するかを見てください。

+0

この場合、私はアイデアを持っていません:/ – Ron

+0

まあ、私はあなたが言ったことをして、それは働いた。ありがとうございました。 – Ron

関連する問題