由于settimer是发送定时消息来实现定时功能,这个消息的优选级比较低,经常在程序忙的时候,定时器不动了,所以我用timesetevent函数来实现定时功能,现在发现一个问题,我想和大家探讨下TimeSetEvent里面提供了一个回调函数来让用户使用,我在回调函数里写上代码
callback TimeProc(....)
{
::SendMessage(hwnd,....)
}然后在窗体里获取发送来的消息,做一些工作,
OnMessage
{function();
}我现在设置定时器为10秒钟触发一次,然后,我的function()函数需要10秒中来完成工作。我想象中应该是function工作完毕后,过10秒才会再次收到消息,因为我用的是SendMessage,在没有返回前,定时器的线程应该是阻塞在那里的。可实际上,function在工作完毕后,不用等10秒,马上就会接收到下一个消息,这样function就变成连续工作了,没有达到我的定时工作的目的请问为何会这样?
callback TimeProc(....)
{
::SendMessage(hwnd,....)
}然后在窗体里获取发送来的消息,做一些工作,
OnMessage
{function();
}我现在设置定时器为10秒钟触发一次,然后,我的function()函数需要10秒中来完成工作。我想象中应该是function工作完毕后,过10秒才会再次收到消息,因为我用的是SendMessage,在没有返回前,定时器的线程应该是阻塞在那里的。可实际上,function在工作完毕后,不用等10秒,马上就会接收到下一个消息,这样function就变成连续工作了,没有达到我的定时工作的目的请问为何会这样?
TIME_PERIODIC ----periodic 每过uDelay 毫秒事件发生一次
我是周期性的触发
后再timeSetEvent