В отношении информации, которую ОП конкретно спрашивал о классе Timer
, который генерирует события через регулярные промежутки времени. Я изменил этот ответ, мой старый ответ ниже горизонтального правила.
Я протестировал следующий код с классом Timer, и кажется, что он может достичь по крайней мере в диапазоне 14 - 15 миллисекунд на моей машине. Попробуйте сами и посмотрите, сможете ли вы воспроизвести это. Таким образом, время отклика менее 50 миллисекунд возможно, но оно не может быть равным ровно одной миллисекунде.
using System;
using System.Timers;
using System.Diagnostics;
public static class Test
{
public static void Main(String[] args)
{
Timer timer = new Timer();
timer.Interval = 1;
timer.Enabled = true;
Stopwatch sw = Stopwatch.StartNew();
long start = 0;
long end = sw.ElapsedMilliseconds;
timer.Elapsed += (o, e) =>
{
start = end;
end = sw.ElapsedMilliseconds;
Console.WriteLine("{0} milliseconds passed", end - start);
};
Console.ReadLine();
}
}
NB. Ниже приведен мой старый ответ, когда я подумал, что ОП говорит о времени. Следующее является просто полезной информацией в отношении хронометража продолжительности событий, но не предоставляет никакого способа запуска событий через регулярные промежутки времени. Для этого необходим класс Timer
.
Попробуйте использовать класс секундомера в System.Diagnostics
: http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx
Вы можете запросить его, чтобы проверить, имеет ли оно высокое разрешение, через поле IsHighResolution
. Также вы можете проверить точное разрешение секундомера:
int resolution = 1E9 / Stopwatch.Frequency;
Console.WriteLine("The minimum measurable time on this system is: {0} nanoseconds", resolution);
Если вы беспокоитесь о том, откуда это на самом деле, документация подразумевает, что она на самом деле внутренне вызывает функции Win32 более низкого уровня:
Класс Секундомер помогает манипулировать временем, связанным с
счетчики производительности в управляемом коде. В частности, частота
поле и метод GetTimestamp можно использовать вместо неуправляемого
Win32 APIs QueryPerformanceFrequency и QueryPerformanceCounter.