Question

Je suis le code suivant:

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

quand je clique sur le bouton, le formulaire se coincent. Je veux faire le ExtractProgress comme travailleur de fond, mais quand je ne sais pas comment convertir la fonction à la fonction BackgroundWorker car la fonction ExtractProgress nécessitent ExtractProgressEventArgs e et la fonction backgroundworker_dowork nécessitent DoWorkEventArgs e.

si quelqu'un peut me aider à convertir ou de me donner une autre solution, il sera grand!

Était-ce utile?

La solution

simple: il suffit de mettre tous le code button1_Click dans une méthode, et ont l'exécution de button1_Click cette méthode dans un BackgroundWorker. Essayez et voir comment il fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top