0

我有一个计时器类..这个计时器将从我的代码块的各个部分启动..我有另一个类来管理这个计时器,即 CTimerManager...这是一个静态类..所以我在这里面临的问题是当我取消初始化我的应用程序,我所有的计时器需要被破坏......但是由于我已经启动了许多计时器,当第一个计时器关闭时,内存变为 NULL,并且如果任何其他计时器处于活动状态并且它尝试访问内存异常发生(由于CTimerManager 的 singletn 实例)...任何人都知道如何面对这个问题

4

2 回答 2

0

仅通过类的工厂方法创建计时器实例CTimerManager。这些计时器本质上与您的经理绑定,并且属于它,因此只有经理应该负责它们的创建和删除。

在您的经理类的析构函数中,您应该停止所有计时器并删除它们。这样,一旦经理被销毁,任何计时器都不会保持活动或活动状态。

于 2012-06-19T14:50:07.737 回答
0

根据您的描述,您正在创建一个类,该类包含在给定时间后回调自身的计时器。当您销毁管理器时,计时器数据结构消失,然后计时器回调对象被销毁。

当您调用 CTimerManager 的析构函数时,您必须确保关闭所有计时器。

您是否使用线程然后调用睡眠?在这种情况下,每个计时器都需要定期检查一个标志,以查看计时器是否提前终止。然后在析构函数中设置一个标志以提前终止计时器并加入()所有计时器线程。

如果您正在调用某些操作系统计时器回调,它可能具有取消计时器的功能。

于 2012-06-19T16:25:28.190 回答