private void __compress_Click(object sender, EventArgs e) { if (__sfd.ShowDialog(this) != DialogResult.OK) { return; } String destFilename = __sfd.FileName; TarLzmaEncoder enc = new TarLzmaEncoder(__compressRoot.Text, false); enc.ProgressEvent += new EventHandler <ProgressEventArgs>(ProgressEvent); FileSystemInfo[] files = new FileSystemInfo[__items.Items.Count]; for (int i = 0; i < __items.Items.Count; i++) { files[i] = (FileSystemInfo)__items.Items[i]; } if (__sfd.FilterIndex != 2) { __bw.DoWork += new System.ComponentModel.DoWorkEventHandler(__bw_DoWork_CompressTarLzma); __bw.RunWorkerAsync(new Object[] { enc, destFilename, files }); } else { __bw.DoWork += new System.ComponentModel.DoWorkEventHandler(__bw_DoWork_CompressTar); __bw.RunWorkerAsync(new Object[] { enc, destFilename, files }); } }
private void __bw_DoWork_CompressTar(object sender, System.ComponentModel.DoWorkEventArgs e) { Object[] args = e.Argument as Object[]; TarLzmaEncoder enc = args[0] as TarLzmaEncoder; String path = args[1] as String; enc.SaveTarball(path); enc.Dispose(); __bw.DoWork -= new System.ComponentModel.DoWorkEventHandler(__bw_DoWork_CompressTar); }
private void __bw_DoWork_CompressTarLzma(object sender, System.ComponentModel.DoWorkEventArgs e) { Object[] args = e.Argument as Object[]; TarLzmaEncoder enc = args[0] as TarLzmaEncoder; String path = args[1] as String; FileSystemInfo[] fsitems = args[2] as FileSystemInfo[]; BeginInvoke(new MethodInvoker(delegate() { _progress.ShowDialog(this); })); foreach (FileSystemInfo fsi in fsitems) { ProgressEvent(this, new ProgressEventArgs(0, fsi.FullName)); DirectoryInfo di = fsi as DirectoryInfo; if (di != null) { enc.AddDirectory(di); } FileInfo fi = fsi as FileInfo; if (fi != null) { enc.AddFile(fi); } } enc.FinishAdding(); enc.Compress(path); enc.Dispose(); __bw.DoWork -= new System.ComponentModel.DoWorkEventHandler(__bw_DoWork_CompressTarLzma); }