public class Test { public void Doit() { var bg36 = new BackgroundWorker(); bg36.DoWork += bg36_DoWork; bg36.RunWorkerAsync(this); } public void SaveLedgers() { } private void bg36_DoWork(Object sender, DoWorkEventArgs e) { var t = (Test) e.Argument; t.SaveLedgers(); } }>I'm using Excel interop and it seems that this functionality needs to run in the UI thread.
> private void initializeBackgroundWorker() > { > bg36 = new BackgroundWorker(); > bg36.DoWork += bg36_DoWork; > bg36.RunWorkerCompleted += bg36_RunWorkerCompleted; > bg36.WorkerReportsProgress = true; > bg36.ProgressChanged += bg36_ProgressChanged; > bg36.WorkerSupportsCancellation = true; > } >>
> private void bg36_DoWork(object sender, DoWorkEventArgs e) > { > BackgroundWorker bw = (BackgroundWorker)sender; >>
> bw.ReportProgress(0, "save ledgers"); >>
> private void bg36_ProgressChanged(object sender, ProgressChangedEventArgs e) > { > statusTextBlock.Text = (string)e.UserState + "\n\n" + Monitor.peek(); > if ((string)e.UserState== "save ledgers") > { > saveLedgers(); > } > } >