2015-05-03 3 views
4

Когда я устанавливаю интервал TTimer в 1, действительно ли он выполняет код каждые 1 миллисекунду или это похоже на каждые 20 миллисекунд или что-то в этом роде?Насколько точным является TTimer?

Я задаю этот вопрос, потому что я знаю, что функция Windows API Sleep() не является точной, поэтому я хочу знать, является ли она одинаковой для TTimer.

+0

TTimer обертывания SetTimer, таймер UI. Чего не хватает, почему вы задаете вопрос. –

+3

* Поскольку точность таймера зависит от тактовой частоты системы и от того, как часто приложение извлекает сообщения из очереди сообщений, значение тайм-аута является приблизительным. * (['Source'] (https://msdn.microsoft.com /en-us/library/windows/desktop/ms644900%28v=vs.85%29.aspx)) – TLama

+0

На многих системах точность TTimer составляет 40 мс, поэтому его нельзя использовать для точной работы. Вы можете использовать таймеры мультимедиа в mmsystem, или если у вас есть новый delphi, вы можете использовать таймеры отладки. – Hans

ответ

7

Стандартный компонент VCL TTimer представляет собой оболочку для функций таймера Windows API SetTimer и KillTimer. TTimer упрощает обработку сообщений WM_TIMER путем преобразования их в события OnTimer. Таймер, основанный на обработке сообщений WM_TIMER, не может обеспечить разрешение более 10 миллисекунд.

Source: Sergworks

Смежные вопросы