Создание класса таймера с триггерами длительности и интервала в C # - PullRequest
0 голосов
/ 07 марта 2011

Существует ли класс, который позволяет вам настроить объект, который будет оставаться активным в течение X секунд (или миллисекунд) и, при необходимости, позволять вам запускать что-либо с интервалом в Y секунд (или миллисекунд)?

Я знаю, что есть System.Timers.Timer, но, похоже, он предназначен только для интервалов (и для того, чтобы не делать этот интервал необязательным).В настоящее время я создаю эту функциональность самостоятельно со всем, что работает, за исключением интервала.С очень большой продолжительностью или очень маленькими интервалами интервалы иногда выполняются в 1 или 2 раза меньше, чем они должны, как я знаю, потому что есть несколько тиков, которые теряются при каждом выполнении интервала, поэтому чем больше выполняющихся интервалов, тем больше тиков теряется,

Я просто хочу убедиться, что в настоящее время в платформе .NET 3.5 с этой точной функциональностью ничего не существует, прежде чем попытаться поэкспериментировать с несколькими идеями, чтобы интервалы всегда выполнялись с правильным количеством раз.

Ответы [ 3 ]

0 голосов
/ 07 марта 2011

А как насчет класса System.Threading.Timer ?Вы можете использовать Timeout.Infinite, если вам не нужно запускать таймер с интервалом.

0 голосов
/ 08 марта 2011

Возможно, вы захотите попробовать Quartz.NET . Он имеет богатый API для планирования любых видов работ / событий с любыми интервалами, повторениями и пропусками зажигания, которые вам могут потребоваться.

0 голосов
/ 07 марта 2011

Лучше всего проверить время в ElapsedEventArgs вашего OnTimedEvent(object source, ElapsedEventArgs e) обработчика событий и вычислить разницу между временем его запуска и временем срабатывания (или временем последнего срабатывания).Затем вы можете включить в свою логику точный временной интервал, который сработал таймер.Я не думаю, что вы когда-нибудь сможете добиться того, чтобы таймер был на 100% точным с точностью до миллисекунды, но вы можете разрешить его, если вам действительно требуется точное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...