【发布时间】:2010-09-27 23:36:59
【问题描述】:
我对后台工作人员有一个非常奇怪的问题。代码太复杂所以会尝试解释问题只是想知道是否有人看到过类似的东西。 我们让 UI 线程从后台线程中分离出来 后台线程在后台对 pdf 打印机进行一些打印 完成后它就像线程函数退出一样死掉,所以我希望引发 runworkercompleted 事件
这是win forms .NET 2.0
因此,每次我们重新安装产品并启动我们的应用程序时,runworkercompleted 甚至都不会被解雇 如果我们从任务管理器中杀死我们的应用程序并重新开始它就像一个魅力一样工作(自然我们有点担心用户看到我们的产品的第一件事是挂起:-))
日志记录已确认在每种情况下 i) 后台工作线程函数确实干净地退出 ii) 在所述线程函数中没有引发异常
这是在两台机器上 100% 可重现的,一台是 win7 和一台 Vista Sp1。真的,我不明白第一次运行与它有什么关系
欢迎提出建议
【问题讨论】:
-
因此,“如果我们从任务管理器中杀死我们的应用程序,runworkercompleted 甚至不会被解雇”。要么不要使用 TaskMan,要么在问题中添加一些标点符号。
-
您可能没有给 BackgroundWorker 足够的时间来启动。
-
我看到了完全相同的问题。第二次工作,但不是第一次?
标签: .net multithreading