BackgroundWorker не запускает событие RunWorkerCompleted

Я создаю фонового рабочего не в своей форме Windows, а в файле класса (BusinessLogic), который реализует всю обработку. Из основной формы я сначала вызываю метод BL, который инициализирует BGW. Затем я вызываю метод BL, который запускает BGW.

Вот еще предыстория :) о моей реализации. Как использовать BackGroundWorker в файле класса?

Событие DoWork выполняется нормально, но не вызывает RunWorkerCompleted.

Я поискал в Google и нашел эту ссылку. У меня такое чувство, что моя проблема такая же, как у этих ребят. http://www.eggheadcafe.com/software/aspnet/29191764/backgroundworker-does-not-fire-the-runworkercompleted-event.aspx

Буду признателен за любой вклад по этому вопросу. Заранее благодарим.

Код в основной форме:

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

Код в 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;             

    }

7
задан Community 23 May 2017 в 11:54
поделиться