如果任何UI自动化客户端处于活动状态,我们的MFC应用程序会在关机期间挂起(例如Inspect.Windows Eyes,UI Spy等) 原因是BOOL AFXAPI AfxOleCanExitApp()如果存在任何Ole对象则返回false。然后该应用程序进入隐藏服务器模式。
我见过处理Document对象的类似帖子。一般解决方案是将对象计数设置为0,正常关闭然后在主框架的OnClose中设置计数。 这对UI自动化来说是一个糟糕的解决方案它导致客户端应用程序中的内存泄漏和无效对象(检查实际上在一段时间后崩溃)。
有没有人看到告诉UI客户端这个服务器正在消失并释放所有对象的正确方法?
答案 0 :(得分:0)
关闭优雅没有真正好的方法。没有优雅的方法可以在任何服务器仍在使用时停止它。你只能进行必要的清理。
优雅终止的唯一真正好方法是首先停止将您的应用程序用作服务器的所有应用程序!完成此操作后退出...;)
所以如果你想强制关机。断开你的能力。免费获得尽可能多的资源。忽略应用程序锁定计数并退出。即使调试版本报告泄漏,也会释放内存。有问题的只是其他资源(文件,互斥体,系统对象......)在关闭应用程序时可能需要更好的处理......