Windows 下, SetTimer 定时器的研究.
2024-10-11 23:23:24
一直很困惑一个问题:
我设置了一个10秒的定时器,可是被调用的函数要花费30秒,
那待调用的函数第二次是什么时候调用的呢?
20秒, 40秒, 还是50秒呢....
所以我进行了实验.
我写了一个类 CExecSqlTimer, 这里类封装了.setitime.
这个类创建一个线程来调用待调用函数.
CExecSqlTimer *time = new CExecSqlTimer;
time->SetInterval( * );
time->Start();
待调用函数:
BOOL CExecSqlTimer::OnTimer()
{ static DWORD dwTick = ::GetTickCount();
static int i = ;
DWORD t = ::GetTickCount() - dwTick;
CString str;
str.Format(" 第 %d 次 %d ms调用.", i, t);
TRACE("%s\n", str);
Sleep();
str.Format(" 第 %d 次 %d ms 执行完.", i, ::GetTickCount() - dwTick);
TRACE("%s\n", str);
i++;
return TRUE;
}
关键看执行完代码:
第 次 ms调用.
第 次 ms 执行完.
第 次 ms调用.
第 次 ms 执行完.
第 次 ms调用.
第 次 ms 执行完.
第 次 ms调用.
第 次 ms 执行完.
第 次 ms调用.
第 次 ms 执行完.
第 次 ms调用.
第 次 ms 执行完.
第 次 ms调用.
第 次 ms 执行完.
事实就放在这里了哈~
想要10秒执行一次,那你就在函数里开个线程去处理你的内容把~
最新文章
- [测]jieba分词
- 详解shape标签
- Python eclipse开发环境搭建
- redis 2.4异常
- LINUX 下mysql数据库导出
- CSS中2d转换:transition过渡放在:hover伪类中与应用在整个元素中区别
- ListCtrl控件
- 【UOJ UNR #1】火车管理
- django 实战篇之模板层
- Redis哨兵模式(sentinel)部署记录(主从复制、读写分离、主从切换)
- Loadrunner11.0 录制手机App脚本的方法一
- js实现上传前删除指定图片
- linux系统坏了,进不了登陆界面怎么办?
- Java try-catch-finally 返回值
- vue select二级城市联动及第二级默认选中第一个option值
- HDOJ1001
- mac系统安装redis
- c++ 中的 set
- IT诗词
- appium 滑动封装
热门文章
- 数迹学——Asp.Net MVC4入门指南(2):添加一个控制器
- 基于MVC4+EasyUI的Web开发框架形成之旅--界面控件的使用
- PHP 数组 foreach引用导致的bug
- for xml path(''),root('')
- SQL:查找被锁的表,以及锁表的SQL语句(重点推荐)
- 关于动态生成data组件
- 网站整合Ucenter详细流程
- SQL 之witn as语法
- C# 文件大小
- finder的隐藏文件&;IOS虚拟机地址