My opinion, and I'm not an expert here.
The moment you said "as precise as possible" you lost it. It won't be, particulary since you are calling ProcessSystemEvents(), which will take a widely variable period of time.
The best you can do in LabWindows is to run a function like this in a separate thread, with no call to ProcessSystemEvents.
Some code like:
timerFlag = 1;
CmtScheduleThreadPoolFunction (DEFAULT_THREAD_POOL_HANDLE, TimerThread, NULL, NULL);
int CVICALLBACK TimerThread(void *ctrlID)
{
while(timerFlag)
{
Your code, without ProcessSystemEvents()
}
}