Я задал этот вопрос, потому что был заинтересован в реализации периодического таймера, который дал бы мне более детальную детализацию, чем таймеры, поставляемые с .NET. Мое исследование этих таймеров (Windows.Forms.Timer
, System.Timers.Timer
и System.Threading.Timer
) показывает, что лучшее, на что я могу надеяться, это гранулярность 15 мс и точность от -1 до +30 мс. Это нормально для большинства приложений, но не для приложения, над которым я работал.
Подробнее о моем исследовании см. Почему таймеры .NET ограничены разрешением 15 мс? и http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=815.
Это привело меня к поиску периодических объектов таймера, доступных в Windows. Я определил пять типов, которые я разместил в исходном вопросе. Я не нашел других. Я отказался от старого таймера Windows, потому что я не хочу обрабатывать сообщения. Затем я написал управляемые прототипы на C # для других четырех типов таймеров и провел некоторое тестирование.
Все четыре типа таймеров (мультимедийные таймеры, таймеры ожидания, таймеры очереди таймеров и таймеры пула потоков) дают надежный интервал в 1 мс с очень хорошим разрешением. Из них таймер Threadpool является наиболее простым для взаимодействия, но, к сожалению, он не поддерживается в Windows XP. Таймеры очереди таймеров имеют головокружительный набор опций, но если вы игнорируете большинство опций, они почти так же просты, как и таймеры Threadpool. См. Изучение вариантов для лучших таймеров для получения дополнительной информации.
Я решил обернуть таймер очереди таймера для своего общего класса таймера в .NET. Вы можете видеть это здесь .
Вас также могут заинтересовать Таймеры ожидания в .NET с C # .