关于定时器自杀再设置的问题

wuxiao0313 2011-12-01 08:59:40
在定时器的执行函数里把定时器kill掉,在函数尾再次SetTimer这个定时器。在一个源码中看到的
这种写法有什么好处?
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dream0411 2011-12-01
  • 打赏
  • 举报
回复
IDT_TIMER0定时器可能只想执行一次,用来做一些if里的工作,然后开始另一个定时器TIMERMM
战在春秋 2011-12-01
  • 打赏
  • 举报
回复
SetTimer(hWnd,IDT_TIMER0,TIMERMM,NULL);
跟踪一下此时第三个参数是否和之前设置的有所不同。如前后一致,那么这种写法没什么意义。
wuxiao0313 2011-12-01
  • 打赏
  • 举报
回复
之前CREATE里 SET了一遍
向立天 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuxiao0313 的回复:]
代码段


C/C++ code


case WM_TIMER:
KillTimer(hWnd,IDT_TIMER0);
if (GetCheckInfo(hWnd))
{
GetNearTrain(hWnd);
for (i=0;i<TotalPm;i++)
……
[/Quote]从代码看好像设置timerID和当前的分支不是一个
Eleven 2011-12-01
  • 打赏
  • 举报
回复
看具体的需求~
wuxiao0313 2011-12-01
  • 打赏
  • 举报
回复
代码段



case WM_TIMER:
KillTimer(hWnd,IDT_TIMER0);
if (GetCheckInfo(hWnd))
{
GetNearTrain(hWnd);
for (i=0;i<TotalPm;i++)
{
if (PmInfo[i].CheckPortNo==99)
DispInfoTab(hMemDC,i,hComm);
}
for (i=0;i<TotalPm;i++)
{
if (PmInfo[i].CheckPortNo-99)
DispInfo(hMemDC,i,hComm);
}
InvalidateRect(hWnd,NULL,FALSE);
}
SetTimer(hWnd,IDT_TIMER0,TIMERMM,NULL);
break;

ndy_w 2011-12-01
  • 打赏
  • 举报
回复
一般是SetTimer在分支里,条件不成立时不再设置。
如果有耗时操作,重新设置的效果会略不相同。
yuucyf 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 wuxiao0313 的回复:]
在定时器的执行函数里把定时器kill掉,在函数尾再次SetTimer这个定时器。在一个源码中看到的
这种写法有什么好处?
[/Quote]
要看具体的应用.

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧