Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: AntonelloОтветов: 2

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

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

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

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

javascheduling

Ответы

Ответ 1 · рейтинг 1 · Allon Guralnek

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

Ответ 2 · рейтинг 1 · Robert Fraser

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы