質問

次のコードがありました:

        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;
        }
    }

ボタンをクリックすると、フォームがスタックします。抽出作業をバックグラウンドワーカーとして作成したいのですが、抽出プログレス関数には抽出プログレッシュテンタルグEとバックグラウンドワーカー_DOWORK関数が必要なため、関数をバックグラウンドワーカー関数に変換する方法がわからない場合は、doworkeventargs eが必要です。

誰かが私がそれを変換するのを手伝ったり、私に別の解決策を与えたりすることができれば、それは素晴らしいことです!

役に立ちましたか?

解決

シンプル:置くだけです すべて コード button1_Click 方法に、そして持っています button1_Click その方法をaで実行します BackgroundWorker. 。それを試して、それがどのように機能するかを見てください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top