社区
网络编程
帖子详情
如何在vc程序中实现每天的固定时刻(比如12:00)触发程序的一个事件?程序中三个定时器会不会冲突?
windy2004
2005-01-18 10:49:42
我的程序需要每天的某个时间触发一个事件.我现在是每分钟获得一次系统时间然后比较.可是程序总是在那个时候出问题.我触发的事件执行完需要时间较长(比1分钟长),而且我的程序中有三个定时器,这个定时触发的只是是其中一个.不知是什么原因导致出错.请教各位大侠该怎么解决?焦急在线等待...
...全文
331
13
打赏
收藏
如何在vc程序中实现每天的固定时刻(比如12:00)触发程序的一个事件?程序中三个定时器会不会冲突?
我的程序需要每天的某个时间触发一个事件.我现在是每分钟获得一次系统时间然后比较.可是程序总是在那个时候出问题.我触发的事件执行完需要时间较长(比1分钟长),而且我的程序中有三个定时器,这个定时触发的只是是其中一个.不知是什么原因导致出错.请教各位大侠该怎么解决?焦急在线等待...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sharkhuang
2005-01-21
打赏
举报
回复
定事情里面最好不要直接执行回调!尤其是复杂得回调!会阻塞定时器!可以定时器发送消息到一个任务!然后任务执行函数主题。
windy2004
2005-01-21
打赏
举报
回复
我还有个问题:
我的程序中的两个定时器一个是10秒一次,另一个是60秒一次,当某一时刻,这两个定时器都符合了触发的条件,可是消息队列中只会有一个wm-time,就只会触发一个定时器。怎样才能保证两个定时器都能触发呢?
windy2004
2005-01-21
打赏
举报
回复
void CGPRSDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case 1: //对话框形成后一秒钟自动触发按钮事件
KillTimer(1);
OnBtnListen();
break;
/* case 2: //每10秒种从数据中读取信息
KillTimer(2);
GetOperations();
SetTimer(2,10000,NULL);
break;
case 3: //每分钟取系统时间若为23:30则
执行一项操作
{
CTime t=CTime::GetCurrentTime();
CString time = t.Format( "%H:%M" );
if(time=="23:30")
{
KillTimer(2);
KillTimer(3);
m_strCJQID="0000";
t=CTime::GetCurrentTime();
m_strCOMMAND=t.Format( "C010%Y%m%d%H%M%S" );
ControlSend();
SetTimer(3,60000,NULL);
SetTimer(2,10000,NULL);
}
}
break;}
CDialog::OnTimer(nIDEvent);
}//end of ontimer
这是我原来的ontimer,可是试运行了十几个小时后出错了,或者没有出错可是第三个定时器没有发挥作用。然后我按照前几楼高手的指导把定时器中执行的内容放在了线程中,可是情况没有变化。后来我想到用不同的回调函数试试,可是不会写。现在我也不知道该怎么解决了,哪位能够给出比较可靠的解决办法?
zhaogaojian
2005-01-21
打赏
举报
回复
按时间如果执行之后,设置一个执行完成的标志,
用一个结构体
typedef struct task
{
CTime task_starttime;//任务开始时间
CTime task_nexttime;//下次任务执行时间
CTime task_endtime;//任务结束时间
CTime task_pretime;//上次任务日期
BOOL task_endflag;//是否有终止日期
}TASK;
否则比较当前“时间”是不是大于“设定的下次执行时间”,如果执行完之后
"设定的下次执行时间+1天",有几十个任务都没问题
rabo
2005-01-21
打赏
举报
回复
开个TIMER读时间啥.....读CTime...
一分钟读一次啥.
而且你出了什么问题你也没说....
时间到了,你执行你的函数时停掉TIMER,执行完了再开始TIMER.
Caps77
2005-01-21
打赏
举报
回复
定时器的响应函数只能用ONTIMER,楼主想干啥?OMTIMER不能解决么?你可以自己写个函数给ONTIMER调用啊
xjtuzhw
2005-01-21
打赏
举报
回复
还是利用OnTime直接读取当前的时间做一个自定义消息好了
随便你加多少相关的时间触发事件
cnwww
2005-01-21
打赏
举报
回复
程序中三个定时器会不会冲突? 不会!
定时器的响应函数只能用ONTIMER?错!可以为每个定时器设不同的Callback function.
fengge8ylf
2005-01-21
打赏
举报
回复
定时器用线程来代替 在线程里sleep()
windy2004
2005-01-20
打赏
举报
回复
多谢指导!
还想请教一个问题:
定时器的响应函数可以不用缺省的ontimer,可是不知道自定义的响应函数怎么写,哪位高手给个例子学习一下?感激。。。
Caps77
2005-01-18
打赏
举报
回复
3个定时器开3个线程执行,不要都放在主线程里,如果主线程执行1分钟的程序,1分钟内定时器不起作用
jqcj
2005-01-18
打赏
举报
回复
定时触发后开一个线程执行事件
gdy119
2005-01-18
打赏
举报
回复
同意楼上!
VC
中
定时器
的使用
实现
而在MFC
程序
中
,可以为每个
定时器
创建对应的`OnTimer`消息处理函数,如`OnTimer(24)`和`OnTimer(25)`,根据`nIDEvent`来处理不同的
定时器
事件
。 4. **取消
定时器
** 当不再需要
定时器
时,需要使用`KillTimer`来...
VC
中
定时器
设置
在
VC
++(Visual C++)开发环境
中
,
定时器
(Timer)是经常被用到的一种功能,主要用于
实现
程序
的定时操作,比如每隔一段时间执行特定的函数或任务。在本文
中
,我们将详细探讨如何在
VC
++
中
设置
定时器
。 一、
定时器
的...
VC
多线程和
定时器
实例
在这个“
VC
多线程和
定时器
”实例
中
,我们可能
实现
了
一个
用户界面,该界面在后台线程
中
执行数据计算,而主线程则负责显示UI。通过使用
定时器
,我们可以定期更新UI,显示计算进度或结果,保证用户界面的响应性。 1. *...
VC
多媒体
定时器
精确定时
要在
VC
中
使用多媒体
定时器
,你需要调用`timeSetEvent`函数来创建
一个
定时器
。这个函数接受几个参数,包括
定时器
的间隔、当
定时器
触发
时应该执行的回调函数、用户自定义的数据以及
定时器
的类型。例如: ```cpp #...
VC
定时器
使用
对于每个
定时器
,可以在回调函数
中
通过`nIDEvent`参数判断是哪
一个
定时器
触发
了: ```cpp void onTimer(UINT nIDEvent) { switch (nIDEvent) { case 1: // 处理每秒
触发
的任务 break; case 2: // 处理每半秒...
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章