C # BackGroundWorker Аномалия DoWork событие не запускается - PullRequest
1 голос
/ 04 июня 2009

Это настройка, которая у меня есть, этот код работает правильно

private void butGo_Click(object sender, EventArgs e)
{
  threadCreateImages.RunWorkerAsync();
}


private void threadCreateImages_DoWork(object sender, DoWorkEventArgs e)
{
  PatientToHL7MSHManager tvPatientToHL7MSHManager = new PatientToHL7MSHManager();
  tvPatientToHL7MSHManager.LoadByMSHID(""); 
}


private void threadCreateImages_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
  MessageBox.Show("DONE"); 
}

если я изменюсь эта линия tvPatientToHL7MSHManager.LoadByMSHID ( ""); в tvPatientToHL7MSHManager.LoadByPatientID ( "");

Он пропускает событие DoWork и переходит прямо к событию RunWorkerCompleted.

Единственное различие между LoadByMSHID и LoadByPatientID - это фильтр в операторе SQL, за исключением того, что путь к коду идентичен.

Код работает без фонового потока.

Любые идеи или предложения будут очень признательны.

Ответы [ 2 ]

9 голосов
/ 04 июня 2009

Вероятно, есть исключение. В событии RunWorkerCompleted проверьте свойство Error передаваемого значения RunWorkerCompletedEventArgs.

BackgroundWorkers не вызывают исключения до основного потока, когда они возникают. Вместо этого вы должны проверить их в событии RunWorkerCompleted.

0 голосов
/ 04 июня 2009

Я не уверен, в чем проблема, но это решило проблему.

Сначала я просто скопировал файл business.dll в папку bin и сослался на него, однако в папке содержался более старый файл business.obj. Когда я скопировал файлы business.dll и business.obj, проблема исчезла.

...