title: Application.Wait or Thread.Sleep
body: <p>I am already using <code>backgroundworker.RunAsyn()</code> to run my code on a separate thread.  However I am hitting a portion where the code iterates to the next line before the previous line is completed.  Should I create a separate <code>backgroundworker</code> to handle that?  Or should I use <code>Application.Wait()</code> or <code>Thread.Sleep()</code>  I am not sure the amount of time to delay and I'd rather not have my program just sitting around waiting for extra un-needed time so I am not sure which route to take.  Here is a snippet of the trouble-maker.</p>
  
  <pre><code>public Form_Main()
  {
     InitializeComponent();
     backgroundworker1.WorkerReportsProgress = true;
     backgroundworker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
     backgroundWorker1_ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
  }
  
  private void btnOpenRefreshSave_Click()
  {
     backgroundWorker1_RunWorkerAsync();
  }
  
  private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  {
     Excel.Application exApp;
     Excel._Workbook exBook;
     Excel._Worksheet exSheet;
  
     exBook = (Excel._Workbook)(exApp.WOrkbooks.Open("C:\\Book1.xlsx")); 
     exSheet = (Excel._Worksheet)(exBook.ActiveSheet);
     //This is the line of code that often times takes a while
     exBook.RefreshAll();
     //end of trouble line
     exBook.SaveAs("C:\\Updated_Book1.xlsx");
  }
  
  private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
  {
  
  }
  </code></pre>