如何写一个计时器 在网站开始运行的时候就开始执行这个计时器 到达到某一时间点的时候就开始执行某一个方法 80
如何写一个计时器在网站开始运行的时候就开始执行这个计时器到达到某一时间点的时候就开始执行某一个方法...
如何写一个计时器 在网站开始运行的时候就开始执行这个计时器 到达到某一时间点的时候就开始执行某一个方法
展开
1个回答
展开全部
你的需求有问题,考虑一下是否必须达到毫秒精度。
一般来说游戏也只要20ms左右精度即可,可以用多媒体定时器来实现。
必须包含:
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
使用多媒体定时器timeSetEvent()函数,该函数定时精度为ms级。利用该函数可以实现周期性的函数调用。如示例工程中的Timer6和Timer6_1。函数的原型如下:
MMRESULT timeSetEvent( UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
WORD dwUser,
UINT fuEvent )
该函数设置一个定时回调事件,此事件可以是一个一次性事件或周期性事件。事件一旦被激活,便调用指定的回调函数, 成功后返回事件的标识符代码,否则返回NULL。函数的参数说明如下:
uDelay:以毫秒指定事件的周期。
Uresolution:以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。
LpTimeProc:指向一个回调函数。
DwUser:存放用户提供的回调数据。
FuEvent:指定定时器事件类型:
TIME_ONESHOT:uDelay毫秒后只产生一次事件
TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。
具体应用时,可以通过调用timeSetEvent()函数,将需要周期性执行的任务定义在LpTimeProc回调函数 中(如:定时采样、控制等),从而完成所需处理的事件。需要注意的是,任务处理的时间不能大于周期间隔时间。另外,在定时器使用完毕后,应及时调用timeKillEvent()将之释放。
QueryPerformanceCount是按CPU频率(想想看吧2.5GHz)来计数的,很耗资源的,理论上可以达到微秒级,不过还要考虑windows进程调度。
另windows本来就不是实时操作系统,你的期望不要太高。
实时要求高的话,工程上用单片机比较多。
一般来说游戏也只要20ms左右精度即可,可以用多媒体定时器来实现。
必须包含:
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
使用多媒体定时器timeSetEvent()函数,该函数定时精度为ms级。利用该函数可以实现周期性的函数调用。如示例工程中的Timer6和Timer6_1。函数的原型如下:
MMRESULT timeSetEvent( UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
WORD dwUser,
UINT fuEvent )
该函数设置一个定时回调事件,此事件可以是一个一次性事件或周期性事件。事件一旦被激活,便调用指定的回调函数, 成功后返回事件的标识符代码,否则返回NULL。函数的参数说明如下:
uDelay:以毫秒指定事件的周期。
Uresolution:以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。
LpTimeProc:指向一个回调函数。
DwUser:存放用户提供的回调数据。
FuEvent:指定定时器事件类型:
TIME_ONESHOT:uDelay毫秒后只产生一次事件
TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。
具体应用时,可以通过调用timeSetEvent()函数,将需要周期性执行的任务定义在LpTimeProc回调函数 中(如:定时采样、控制等),从而完成所需处理的事件。需要注意的是,任务处理的时间不能大于周期间隔时间。另外,在定时器使用完毕后,应及时调用timeKillEvent()将之释放。
QueryPerformanceCount是按CPU频率(想想看吧2.5GHz)来计数的,很耗资源的,理论上可以达到微秒级,不过还要考虑windows进程调度。
另windows本来就不是实时操作系统,你的期望不要太高。
实时要求高的话,工程上用单片机比较多。
更多追问追答
追问
我的要求其实很简单,就是在Global中写一个记时器 每隔一分钟 检索一次数据库,当数据库中某一个行的TIME字段与当前时间相等的时候 就调用一个方法发送邮件
追答
拖一个Timer控件,然后双击,生成Tick事件的映射函数,写你需要的代码就可以了~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询