2010-09-27 74 views
2

我有一个非常奇怪的问题与背景的工人。代码太复杂了,所以试图解释这个问题只是想知道是否有人看到类似的东西。 我们有UI线程分拆后台线程 后台线程做一些印刷在后台 一个PDF打印机完成后,它只是死在线程函数退出,所以我希望得到提升的RunWorkerCompleted事件Backgroundworker runworkercompleted not firing

这是赢得形式.NET 2.0

所以每次我们做一个新产品的安装和火起来我们的应用程序的runworkercompleted即使不被炒鱿鱼 如果我们从任务管理器杀了我们的应用程序,并开始了它的工作原理是时间一种魅力(我们有点担心用户看到我们产品的第一件事是挂起:-))

记录证实,在任何情况下 I)的后台辅助线程函数不退出干净 II)没有异常都在提出上述线FUNC

这两个机器之一Win7和Vista的一台100%reproable SP1。它真的,我不明白什么第一次运行有它

做任何的建议表示欢迎

+0

因此,“如果我们从任务管理器中删除我们的应用程序,完成的runworker甚至不会被解雇”。要么不要使用TaskMan,要么在问题中添加一些标点符号。 – 2010-09-28 11:09:27

+0

您可能没有给BackgroundWorker足够的时间启动。 – leppie 2010-09-28 11:14:16

+0

我看到完全相同的问题。第二次工作,但不是第一次? – BlueChippy 2012-01-24 08:48:35

回答

1

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

1

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

它似乎几乎是一个完整性检查,但这可以解释为什么BackgroundWorker干净地退出,并且RunWorkerCompleted没有被解雇。

+0

是的,请记住它从第二次开始工作 – Rahul 2010-09-27 23:58:19

+0

对不起,我错过了你的描述;你可以发布你的BackgroundWorker骨架的代码示例吗?还是在RunWorkerCompleted子版的开头直接使用断点? – 2010-09-28 08:03:52