C#BackGroundWorker Anomaly DoWork事件未触发

1 c# multithreading backgroundworker

这是我的设置,此代码正常工作

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"); 
}
Run Code Online (Sandbox Code Playgroud)

如果我更改此行tvPatientToHL7MSHManager.LoadByMSHID(""); to tvPatientToHL7MSHManager.LoadByPatientID("");

它跳过DoWork事件并直接进入RunWorkerCompleted事件.

除了代码路径相同之外,LoadByMSHID和LoadByPatientID之间的唯一区别是SQL语句上的过滤器.

没有后台线程,代码可以正常工作.

任何想法或建议将非常感激.

Ray*_*gus 9

可能会抛出异常.在RunWorkerCompleted事件中,检查传入的RunWorkerCompletedEventArgs值的Error属性.

BackgroundWorkers在发生主线程时不会引发异常.相反,您必须在RunWorkerCompleted事件上检查它们.