1. Not high precision
Windows98 is probably 55ms,windows NT is probably 10ms.
2. Wm_timer message may not be processed in time
Wm_timer messages, like other messages, are stored in a normal message queue. If the program processing other messages, using too long time, it delayed the processing of WM_TIMER messages, from the effect of the equivalent of the timer to be late.
3. Wm_timer message may be missing
This way, if a Windows program is demanding on time (for example, software such as a tester), what happens?
"The Soldier Ethernet Tester" uses the following stupid method.
This approach is very simple, but it does work. The following is the pseudo code for this method.
Interval=x; The time interval that is required
Next_do_work_time= current time;
while (!need_stop)
{
Todo
{
Cur_time= current time;
} while (!need_stop && cur_time
if (need_stop) break;
Do_work ();
Next_do_work_time+=interval;
}
It is important to note that this approach is CPU-intensive:)