Есть много веских причин, почему вы не должны ограничивать частоту кадров таким образом.Как указала Стийн, одна причина заключается в том, что не каждый монитор может работать с частотой 60 кадров в секунду, другая причина в том, что разрешение таймеров недостаточно, и еще одна причина в том, что даже при достаточном разрешении работают два отдельных таймера (обновление монитора и ваш).параллель всегда будет не синхронизирована со временем (они должны!) из-за случайных неточностей, и наиболее важной причиной является то, что это вообще не нужно.
Обратите внимание, что разрешение таймера по умолчанию в Windows составляет 15 мс,и наилучшее возможное разрешение, которое вы можете получить (используя timeBeginPeriod), составляет 1 мс.Таким образом, вы можете (в лучшем случае) ждать 16 мс или 17 мс.Один кадр со скоростью 60 кадров в секунду равен 16,6666 мс. Как вы ждете 16,6666 мс?
Если вы хотите ограничить скорость вашей игры частотой обновления монитора, включите вертикальную синхронизацию.Это будет делать то, что вы хотите, точно и без проблем с синхронизацией.Вертикальная синхронизация тоже имеет свои особенности (например, забавный сюрприз, который вы получаете, когда кадр занимает 16,67 мс), но это, безусловно, лучшее из доступных решений.
Если причиной, по которой вы хотели это сделать, былопоместите вашу симуляцию в цикл рендеринга, это обязательно для вас.