public static void AccurateWaitMilliseconds(double time)
{
Stopwatch sw = new Stopwatch();
sw.Start();
int milliSeconds = (int)time;
time = time / 1000;
double ticks = (Stopwatch.Frequency * time);
if (milliSeconds >= 20)
{
Thread.Sleep(milliSeconds - 12);
}
while (sw.ElapsedTicks < ticks) ;
sw.Stop();
}