用ATL做了一个exe的服务(a.exe)让其它应用程序调用,但有时这些应用程序因为自身的原因非法关闭了(例如内存出错等),这时候,ATL服务还在被占用(表现为在任务管理器中,a.exe程序并没有退出.),请问我该如何在这种情况下退出a.exe程序.
目前已经可以正确检测到其它应用程序的非法关闭,但就是释放不了服务对象,a.exe程序老是退不出来.请高手指点,谢谢.
目前已经可以正确检测到其它应用程序的非法关闭,但就是释放不了服务对象,a.exe程序老是退不出来.请高手指点,谢谢.
调试欢乐多
在提供服务的时候,客户程序创建一个对象时,服务需要分配一定数量的内存,当客户程序删除该对象时,服务释放相关的内存.
但是,现在有的客户程序因为访问内存出错等非法操作异常关闭了,对应的对象就没有删除,那么服务就会一直占用内存,在服务长时间运行后,服务就会占用大量的内存.
现在想找一个方法,把这些异常关闭的客户对象删除掉,释放占用的内存.正常来说是应该要求客户程序保证删除这些对象的,但是每个人编写程序的质量都不一样,当把这个服务以SDK的方式提供给第三方开发商的时候,就会遇到问题,所以想更加完善这个服务,使其更智能化,适合不同的用户.强行关闭进程是可以,不过同时也令正在正常使用服务对象的客户程序失去服务对象而出现异常.还有其它更好的方法吗?
谢谢各位.
希望大家可以多多讨论, 谢谢.