C# ionic.zip ProgressBar كعامل خلفي
سؤال
حصلت على الرمز التالي:
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;
}
}
عندما أنقر على الزر ، يتعثر النموذج. أريد أن أجعل المستخلص كعاملين في الخلفية ، لكن عندما لا أعرف كيفية تحويل الوظيفة إلى وظيفة Prossialworker لأن وظيفة الاستخراج تتطلب extractprogresseventargs e ودالة backgroundworker_dowork تتطلب doworkeventargs e.
إذا كان بإمكان شخص ما مساعدتي في تحويله أو إعطائي حلًا آخر ، فسيكون ذلك رائعًا!
المحلول
بسيط: فقط ضع الكل الرمز في button1_Click
في طريقة ، ولديها button1_Click
تشغيل هذه الطريقة في أ BackgroundWorker
. جربه وشاهد كيف يعمل.
لا تنتمي إلى StackOverflow