首页 > 解决方案 > CWnd::KillTimer 失败,当我在主线程中启动两个具有相同时间间隔的计时器时

问题描述

我对如何在MFC应用程序中停止计时器感到困惑。

我在主线程中同时使用SetTimer(2, 1000, NULL)和。SetTimer(3, 1000, NULL)中间有一些加载和上传任务,当任何计时器(2 或 3)完成时,我只需同时调用CWnd::Killtimer(2)CWnd::Killtimer(3)

但是,即使 Killtimer 成功,程序也只是执行代码,就好像仍然设置了计时器一样。即使 m_bIsRunning 实际上是假值if(true == m_bIsRunning),位于函数中的条件代码也会失败。CWnd::OnTimer

标签: winapimfc

解决方案


MSDN状态(SetTimer 函数):

返回值

类型:

类型:UINT_PTR

如果函数成功并且 hWnd 参数为 NULL,则返回值是一个标识新计时器的整数。应用程序可以将此值传递给 KillTimer 函数以销毁计时器。

您应该将这些返回值而不是 2 和 3 传递给 KillTimer()


推荐阅读