Je souhaite implémenter une méthode rappelant une méthode à un moment précis. Nous pouvons avoir plus qu'une méthode qui peut être appelée en même temps.Rappel avec un temps
public void CallmeBack(DateTime time, Action callback)
{
}
Quelle est la meilleure implémentation en C#? Ma solution rapide et sale était de créer un dictionnaire Dictionary<DateTime, List<Action>>
et de faire une minuterie chaque chaque (minute/seconde) et vérifier l'heure (DateTime.Now
) et une heure actuelle dans le mode de test.
La solution doit être "sûre" si l'heure actuelle de la machine a changé. Ainsi, une solution simple comme cela pourrait ne pas fonctionner:
Timer timer = new Timer((param) => {callback.Invoke();}, null,
(long)(time - DateTime.Now).TotalMilliseconds, Timeout.Infinite);
Edit: cas typique où simple minuterie ne fonctionne pas est l'heure d'été et réglage manuel de l'heure/date. De plus, je veux juste que le rappel soit exécuté une fois pas plusieurs fois.
Je sais qu'il est tard, mais avez-vous résolu cela? Quelle précision avez-vous besoin que ce soit ... –