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"); 
}
如果我更改此行tvPatientToHL7MSHManager.LoadByMSHID(""); to tvPatientToHL7MSHManager.LoadByPatientID("");
它跳过DoWork事件并直接进入RunWorkerCompleted事件.
除了代码路径相同之外,LoadByMSHID和LoadByPatientID之间的唯一区别是SQL语句上的过滤器.
没有后台线程,代码可以正常工作.
任何想法或建议将非常感激.