これは私が持っているセットアップです、このコードは正しく動作します
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ステートメントのフィルターです。
コードは、バックグラウンドスレッドがなくても正しく機能します。
任意のアイデアや提案をいただければ幸いです。