我得到以下代码:
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。
如果有人可以帮助我转换它或给我另一个解决方案,那将是很棒的!
最佳答案
简单:只需将button1_Click
中的所有代码放入方法中,并让button1_Click
在BackgroundWorker
中运行该方法。尝试一下,看看效果如何。