HANDLE TimerTask(unsigned int period,WAITORTIMERCALLBACK task, void* arg);
void main()
{
HANDLE h1,h2,h3;
double Task2ms_Raster, Task10ms_Raster, Task100ms_Raster ;
h1=TimerTask(2,TASK1,&Task2ms_Raster);
h2=TimerTask(10,TASK2,&Task10ms_Raster);
h3=TimerTask(100,TASK3,&Task100ms_Raster);
}
HANDLE TimerTask(unsigned int period,WAITORTIMERCALLBACK task,void* arg)
{
HANDLE HTimer =NULL;
//set the timer to call the timer routine
if(!CreateTimerQueueTimer( &HTimer, NULL, (WAITORTIMERCALLBACK)task,(PVOID) arg, 0, period*1000, 0))
{
printf("CreateTimerQueueTimer failed (%d)\n", GetLastError());
return NULL;
}
return HTimer;
}
我创建了一个处理程序来处理TASK1,TASK2和TASK3三个任务(函数定义未显示)。应该每2ms,10ms和100ms调用TASK1,TASK2和TASK3。我在上面的代码周期中指定了1000毫秒的毫秒执行但是当我运行应用程序时,它执行得非常慢。有人可以找出错误吗?
答案 0 :(得分:0)
在对CreateTimerQueueTimer的调用中,停止将“period”乘以1000。否则,您指定秒而不是毫秒。
换句话说,改变这一行:
if(!CreateTimerQueueTimer( ..., period*1000, 0))
对此:
if(!CreateTimerQueueTimer( ..., period, 0))