Backgroundworker runworkercompleted没有开火

时间:2010-09-27 23:37:00

标签: .net multithreading

我对后台工作者有一个非常奇怪的问题。代码太复杂,所以试着解释问题只是想知道是否有人看过类似的东西。 我们让UI线程脱离后台线程 后台线程在后台对pdf打印机进行一些打印 完成后它就像在线程函数退出时一样死掉,所以我希望引发runworkercompleted事件

这是win形式.NET 2.0

因此,每当我们对产品进行全新安装并启动我们的应用程序时,即使没有被解雇,运行工作者也会完成 如果我们从任务管理器中删除我们的应用程序并重新开始它就像一个魅力(自然我们有点担心用户看到我们的产品的第一件事是挂起:-))

记录已确认在每种情况下 i)后台工作线程函数确实完全退出 ii)在所述线程函数中没有引发异常

这是两台机器100%的责备,一台win7和一台Vista Sp1。它真的,我无法理解第一次运行与它有什么关系

欢迎任何建议

2 个答案:

答案 0 :(得分:1)

RunWorkerCompleted事件是否实际注册到BackgroundWorkers事件处理程序?

这看起来几乎是一个健全性检查,但这可以解释为什么BackgroundWorker会干净地退出,并且RunWorkerCompleted不会被触发。

答案 1 :(得分:1)

当我意识到我正在处理我的BackgroundWorker对象并在异步执行完成之前过早地分离事件处理程序时,我遇到了这个问题。查看您的代码,确保您没有使用使用块或专门调用dispose或以其他方式断开事件处理程序来围绕BackgroundWorker。