首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# BackGroundWorker Anomaly DoWork事件未触发

C# BackGroundWorker Anomaly DoWork事件未触发
EN

Stack Overflow用户
提问于 2009-06-04 14:21:11
回答 2查看 2.7K关注 0票数 1

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

代码语言:javascript
复制
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语句的筛选。

在没有后台线程的情况下,代码可以正常工作。

如有任何想法或建议,我们将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2009-06-04 14:26:39

可能是抛出了一个异常。在RunWorkerCompleted事件中,检查传入的RunWorkerCompletedEventArgs值的Error属性。

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

票数 9
EN

Stack Overflow用户

发布于 2009-06-04 19:29:07

我不确定是什么问题,但这解决了问题。

最初,我只是将business.dll复制到bin文件夹中并引用它,但是该文件夹包含一个较旧的business.obj文件。当我同时复制business.dll和business.obj文件时,这个问题就消失了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/950907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档