Я создаю backgroundworker не в форме Windows, а в файле классов (BusinessLogic), который реализует всю обработку.Из основной формы я сначала вызываю метод BL, который инициализирует BGW.Затем я вызываю метод BL, который запустит BGW.
Вот дополнительная справка :) о моей реализации. Как использовать BackGroundWorker в файле класса?
Событие DoWork работает нормально, но оно не вызывает RunWorkerCompleted.
Немного погуглив, и я узнал эту ссылку.У меня такое чувство, что моя проблема такая же, как у этого парня.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;
}