【发布时间】:2021-08-19 23:24:56
【问题描述】:
是否有一种策略可以安全地允许 ATL 对象释放自身以响应 Windows 消息或接收器事件?
换句话说,假设您有一个 ATL 类,它继承了某些窗口(使用消息映射)和/或接收来自 COM 对象的事件(使用接收器映射)。并且您希望课程在给定特定消息或事件时释放自己。例如,您可能希望在特定子类窗口收到WM_CLOSE 时释放,或者您正在下沉DWebBrowserEvents2 并希望在DISPID_ONQUIT 时释放。
我认为问题在于,如果您在消息或事件处理程序的中间释放,ATL 框架之后可能仍有一些处理工作要做(即使您,比如说,做类似bHandled = TRUE 的事情)。如果你的对象在那个时候被释放/删除,那么坏事就会接踵而至。
有人知道解决这个问题的方法吗?感谢您的任何意见。
【问题讨论】: