BackgroundWorker does not fire the RunWorkerCompleted event

Viewed 12100

I'm creating backgroundworker not in my windows form but in the class file (BusinessLogic) that implements all the processing. From main form I first call the BL method that initializes the BGW. Then I call the method of BL which will start the BGW.

Here is more background :) on my implementation. How to use BackGroundWorker in class file?

The DoWork event runs fine but it doesnt call the RunWorkerCompleted.

Some googling and I found out this link. I've a feeling that my problem is same as this guys. http://www.eggheadcafe.com/software/aspnet/29191764/backgroundworker-does-not-fire-the-runworkercompleted-event.aspx

I'd appreciate any input on this issue. Thanks in advance.

Code in Main form:

    private void frmMain_Load(object sender, EventArgs e)
    {
      Hide();
      BusinessLogic.BGWInitialize();
      BusinessLogic.StartBackgroundWorker();                
      while (!BusinessLogic.firstCycleDone)
      {
        Thread.Sleep(100);
      }
      Show();            
    }        

Code in BusinessLogic:

    public static void BGWInitialize()
    {
        bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
        bgWorker.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgressChanged);
        bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted);
        bgWorker.WorkerReportsProgress = true;
    }

    public static void StartBackgroundWorker()
    { 
        bgWorker.RunWorkerAsync();
    }


    private static void bgWorker_RunWorkerCompleted(
        object sender, RunWorkerCompletedEventArgs e)
    {            
        firstCycleDone = true;             

    }
2 Answers
Related