Quote Originally Posted by 1248 View Post
I will try to learn debugging today so i can see how numbers change to look where problem is.
Well, the problem here is rather obvious and also I told you what it is. However, learning debugging always is a good idea and will probably give you a more hands-on perception of the problem here. But there will come much more exciting things to discover by debugging...

Do i need to use this to ensure it calculates once only or it already does it once?
if (1 > time.QuadPart)(
time.QuadPart = (freq.QuadPart*300) + count.QuadPart);
No. You definitely do need a timer here. It may look more complicated, but only on first sight. And the other two variants discussed both are no alternatives: They both block the GUI thread for three seconds.