title: DotNetZip in BackgroundWorker update progressbar and label on a form
body: <p>I'm creating option to backup data of my app with DotNetZip and to avoid freezing the app I've found that the best way for a this type of action best way is to use BackgroundWorker. So I came with something like this:</p>
  
  <pre><code>    private void processButton_Click(object sender, EventArgs e)
      {
          BackgroundWorker worker = new BackgroundWorker();
          worker.WorkerReportsProgress = true;
          worker.DoWork += new DoWorkEventHandler(worker_DoWork);
          worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
          worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
  
          BackupParams bp = new BackupParams();
          bp.Source = inputTextBox.Text;  // source dir
          bp.Output = outputTextBox.Text; // output file
          bp.Password = @"Pa$$w0rd";
  
          worker.RunWorkerAsync(bp);
      }
  
      void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
      {
          MessageBox.Show((string)e.Result, "Zip", MessageBoxButtons.OK, MessageBoxIcon.Information);
      }
  
      void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
      {
  
      }
  
      void worker_DoWork(object sender, DoWorkEventArgs e)
      {
          BackupParams bp = (BackupParams)e.Argument;
  
          string id = Guid.NewGuid().ToString();
          comment += "Created at: " + DateTime.Now.ToString() + "\n";
          comment += id;
  
          ZipFile zf = new ZipFile();
          zf.Comment = comment;
          zf.CompressionMethod = CompressionMethod.BZip2;
          zf.CompressionLevel = CompressionLevel.BestCompression;
  
          zf.Encryption = EncryptionAlgorithm.WinZipAes256;
          zf.Password = bp.Password;
  
          zf.Name = bp.Output;
  
          zf.AddDirectory(bp.Source);
  
          zf.Save();
  
          e.Result = bp.Output;
      }
  </code></pre>
  
  <p>and this is BackupParams</p>
  
  <pre><code>public class BackupParams
  {
      public string Source { get; set; }
      public string Output { get; set; }
      public string Password { get; set; }
  }
  </code></pre>
  
  <p>And right now I'm stuck cause I want to show the progress (percentage with names) of files added to the archive. What is the best way to do this? I know i can use those methods from ZipFile</p>
  
  <pre><code>zf.SaveProgress += zf_SaveProgress;
  zf.AddProgress += zf_AddProgress;
  </code></pre>
  
  <p>but from those I don't have access progressbar or label that are on form...</p>