Я хочу вызвать определенную функцию в моем приложении С# в определенное время. Сначала я подумал об использовании Timer
(System.Time.Timer)
, но это стало практически невозможно использовать. Почему?
Simple. Для класса Timer требуется Interval
в миллисекундах, но, учитывая, что я могу захотеть, чтобы функция была выполнена, пусть говорит через неделю, что будет означать:
- 7 дней = 168 часов;
- 168 часов = 10 080 минут;
- 10,080 минут = 604 800 секунд;
- 604 800 секунд = 604 800 000 миллисекунд;
- Таким образом, интервал составит 604 800 000,
Теперь не забывайте, что принятый тип данных Interval
- int
, и, как известно, диапазон int
изменяется от -2147,483,648 до 2,147,483,647.
Это делает Timer
бесполезным, но не в этом случае, но в случае более чем 25 дней, как только мы не сможем установить Interval
больше, чем 2 147 483 647 миллисекунд.
Поэтому мне нужно решение, в котором я мог бы указать, когда должна быть вызвана функция. Что-то вроде этого:
solution.ExecuteAt = "30-04-2010 15:10:00";
solution.Function = "functionName";
solution.Start();
Итак, когда системное время достигнет "30-04-2010 15:10:00", функция будет выполнена в приложении.
Как решить эту проблему?
Дополнительная информация: что сделают эти функции?
- Получение климатической информации и на основе этой информации:
- Запуск/выключение других приложений (большинство из них основаны на консоли);
- Отправка пользовательских команд в консольные приложения;
- Отключение, перезагрузка, спящий режим, спящий режим компьютера;
- И если возможно, заплатите BIOS за включение компьютера;
EDIT:
Казалось бы, что принятый тип данных Interval
- double
, но если вы установите значение больше, чем int
на Interval
, а вызов Start()
, он выдает исключение [0, Int32.MaxValue]
.
ИЗМЕНИТЬ 2:
Jørn Schou-Rode предложил использовать Ncron для обработки задач планирования, и сначала это кажется хорошим решением, но я бы как услышать о тех, кто работал с ним.