public class Test
>> {
>>
>> public static ManualResetEvent re = new ManualResetEvent(false);
>>
>> public void Doit()
>> {
>> var bg36 = new BackgroundWorker();
>> bg36.DoWork += bg36_DoWork;
>> bg36.WorkerReportsProgress = true;
>> bg36.ProgressChanged += bg36_ProgressChanged;
>> bg36.RunWorkerAsync();
>>
>> }
>>
>> private void bg36_ProgressChanged(object sender, ProgressChangedEventArgs e)
>> {
>> if ((string)e.UserState== "save ledgers")
>> {
>> SaveLedgers();
>> Test.re.Set();
>> }
>> }
>>
>> public void SaveLedgers()
>> {
>> }
>>
>> private void bg36_DoWork(Object sender, DoWorkEventArgs e)
>> {
>> BackgroundWorker bw = (BackgroundWorker)sender;
>> bw.ReportProgress(0,"save ledgers");
>> Test.re.WaitOne();
>> //Continue
>> }
>>
>> }