我写了一个DBResourceMonitor
由一组数据库类使用的简单类。当我的一个数据库类的实例被创建时,它会注册自己,当被销毁时,它会使用DBResourceMonitor
. 当应用程序终止时,该全局实例DBResrouceMonitor
被销毁,它检查以确保没有任何它监视的类的剩余已注册实例(即,对于每个寄存器,都调用了一个注销),并发出一个 TRACE 输出如果不匹配,则断言。
这一切都很好......直到我将这些数据库对象中的几个作为我的全局应用程序对象的成员。因此,全局应用程序对象和应用程序DBResourceMonitor
都是全局单例,应用程序是第一个被构造的,因此是最后一个被销毁的,因此当DBResrouceMonitor
被销毁时,应用程序对象的成员还没有被注销,并且所以它会抛出一个错误,表明存在不匹配的注册/注销调用。
据我所知,没有办法确保DBResrouceMonitor
在应用程序对象之前构建(因此在之后销毁)。
它是否正确?有没有一种聪明的方法来解决这个问题,或者重新考虑上面的方法,以便我仍然可以跟踪在最终线程终止之前是否所有事情都得到了照顾?