C # Ionic.Zip прогрессбар в качестве фонового работника - PullRequest
2 голосов
/ 01 декабря 2010

Я получил следующий код:

        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 Ответ

1 голос
/ 01 декабря 2010

Простой: просто поместите все код в button1_Click в метод и попросите button1_Click запустить этот метод в BackgroundWorker.Попробуйте и посмотрите, как это работает.

...