Преобразование класса Timer из Java в С#: планирование задач

Я переношу приложение с Java на C# и столкнулся с проблемой, связанной с различным поведением и функциями между java.util.Timer и System.Threading.Timer. На самом деле, в Java-версии класса Timer есть функция (используемая в исходном коде) для планирования задач, которой нет в .NET-версии, где можно запланировать одну задачу (через функцию делегата) на время.

Есть ли решение, хотя бы небольшой набор классов для реализации этой функции?

Я заметил существование нескольких библиотек планирования (например, Quartz), но я бы предпочел решение, которое минимизирует объем используемого кода.

Спасибо вам всем! :)


person Antonello    schedule 17.08.2009    source источник


Ответы (2)


Вы можете просто использовать любой класс таймера. Для каждой запланированной задачи создайте новый класс таймера и просто установите для свойства Interval значение (ScheduledTime - DateTime.Now).TotalMilliseconds и задайте AutoReset значение false (или свойство Enabeld — значение false в коде программной части для события Tick). Это выполнит ваш код один раз в указанное ScheduledTime.

person Allon Guralnek    schedule 19.08.2009
comment
иногда я задаю вопросы StackOverflow, как если бы я сделал это в реальной жизни другу: на самом деле, через несколько минут после того, как я написал это здесь, я разработал решение, похожее на то, которое вы описали здесь... :) - person Antonello; 19.08.2009

В .NET есть как минимум 4 таймера. Ваш короткий ответ: используйте System.Threading.Timer. Я рекомендую прочитать о таймерах здесь здесь, а также просмотр System.Windows.Threading.DispatchTimer (часть WPF), который может отправлять события в определенное время, но делает это в потоке пользовательского интерфейса.

person Robert Fraser    schedule 17.08.2009