Максимальный интервал таймера равен 2,147,483,647. это около 25 дней. Но в моих требованиях мне нужно, чтобы таймер будет ждать 30 дней. Как я могу это решить? Пожалуйста, помогите.
Максимальный интервал таймера
Ответ 1
Используйте для этого System.Threading.Timer
. Существуют конструкторы, которые принимают long
, a uint
или TimeSpan
вместо int
для dueTime
. Любой из них позволит вам установить период в 30 дней.
Обновить: это самый простой способ сделать это:
System.Threading.Timer _timer;
public void Start30DayTimer()
{
TimeSpan span = new TimeSpan(30, 0, 0, 0);
TimeSpan disablePeriodic = new TimeSpan(0, 0, 0, 0, -1);
_timer = new System.Threading.Timer(timer_TimerCallback, null,
span, disablePeriodic);
}
public void timer_TimerCallback(object state)
{
// do whatever needs to be done after 30 days
_timer.Dispose();
}
Ответ 2
int days = 30;
Создайте таймер на один день.
Уменьшение days
при каждом срабатывании таймера.
Ответ 3
Вы всегда можете подождать таймер на более короткий промежуток времени, например, один день и каждый раз, когда таймер запускает счетчик и проверяет текущее значение счетчика. Если значение равно 30, тогда выполните код, который должен запускаться один раз каждые 30 дней.
Лучшая идея - установить значение где-то во внешнем файле, чтобы, если программа когда-либо неожиданно завершалась, вы можете возобновить работу, где вы остановились. В идеале вы, вероятно, захотите поставить следующую дату запуска в файл, чтобы в случае, если программа отключена в течение нескольких дней, вы можете возобновить ее и запустить ее в правильную дату, не беспокоясь о том, когда она была в последний раз. Так что что-то вроде
NextRunDate = 10/10/2009 16:40
Когда программа запускается, она устанавливает дату еще на 30 дней.
Ответ 4
Это таймер, говорящий, что ваше приложение более правильно реализовано как запланированное задание.
Ответ 5
Я настоятельно рекомендовал использовать функцию "Запланированная задача", особенно если это предназначено для запуска чего-либо в тот же день каждый месяц, как месяцев варьируются от 28 до 31 дня.
Ответ 6
Установите переменную datetime в datetime, когда вы хотите выполнить все, что она есть... Затем просто проверяйте таймер каждую минуту (или независимо от вашего уровня требуемой точности), чтобы узнать, прошло ли это время datetime...
Ответ 7
Для этого с таймером вам также потребуется приложение и ПК, который работает без перерыва в течение 30 дней. Не исключено, но большой риск.
Похоже, вам нужно запланировать выполнение чего-то. Вычислите целевую дату/время и сохраняйте, что это файл XML или .config. Когда приложение перезагрузится, он может повторно рассчитать TimeSpan для запуска события.
Ответ 8
Библиотека Quartz.NET - еще один вариант для запуска вашего кода по расписанию.
Ответ 9
Конструктор таймера возьмет TimeSpan, который является int64 тикает, что более 25 дней?
Вы также считали, что система не может оставаться на 30 дней?
Просто посмотрел, это 10 675 199 дней.