C # Ionic.Zip progressBar comme travailleur de fond
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!
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