Я хочу реализовать метод, который вызывает метод в точное время. У нас может быть больше, чем метод, который может быть вызван одновременно.
public void CallmeBack(DateTime time, Action callback)
{
}
Какая лучшая реализация в C #?
Моим быстрым и грязным решением было создание словаря Dictionary<DateTime, List<Action>>
и создание таймера каждые (минуты / секунды) и проверка времени (DateTime.Now
) и текущего времени в тестовом режиме.
Решение должно быть "Безопасным", если текущее машинное время изменилось. Поэтому такое простое решение не может работать:
Timer timer = new Timer((param) => {callback.Invoke();}, null,
(long)(time - DateTime.Now).TotalMilliseconds, Timeout.Infinite);
Редактировать:
Типичный случай, когда простой таймер не работает - это летнее время и ручная настройка времени / даты.
Кроме того, я просто хочу, чтобы обратный вызов выполнялся один раз, а не несколько раз.