带有ActiveX控件的Windows窗体应用程序只在生产环境中关闭子窗体

问题描述:

我有一个Windows窗体应用程序,它创建一个窗口并监视SQL队列中的条目。当某些东西出现时,它会产生一个线程,该线程打开另一个表单,该表单启动另一个线程来执行包含ActiveX控件的工作。一旦控件完成了它的工作,我将它从表单中删除,处理它,然后调用垃圾收集器。然后我使用一个委托(因为它在一个线程中)调用Close()
这是问题出现的地方。在我的开发盒上,一切正常;孩子形式消失了,我留下了我开始的主要形式。但是,当我尝试在Windows 2003 Server框中运行它时,它不起作用。孩子形式不会消失。它冻结。我可以移动它,但试图关闭它会弹出“立即结束”对话框(主窗体也冻结,如果单击按钮则显示“无响应”)。
我试图登录ChildForm_FormClosed,我可以看到事件日志中的条目,所以它在它认为它关闭以及它实际上关闭的时间之间陷入了某处...?带有ActiveX控件的Windows窗体应用程序只在生产环境中关闭子窗体

这可能是什么原因造成的?
我认为这可能是ActiveX控件没有正确安装在机器上,但该应用程序的一部分工作,并且它不冻结,直到控件已经被处置。

+0

当您违反窗口的线程要求时,会出现相当标准的死锁。如果您想让某人为您进行调试,那么您将不得不发布一个小文件共享服务的小型repro项目。 – 2011-02-08 00:50:35

原来这是第三方ActiveX控件的问题。它有一个错误,当它告诉时它不想关闭。