J'ai trouvé une solution qui est assez simple :
1 - Avant de lancer la minuterie, j'enregistre l'heure actuelle dans la mémoire de l'appareil. TotalMillisseconds
(de la DateTime.Now.TimeOfDay.TotalMilliseconds
):
double _startingTime = DateTime.Now.TimeOfDay.TotalMilliseconds;
2 - Chaque fois que la minuterie se déclenche, j'obtiens à nouveau l'heure actuelle, puis j'utilise la fonction double
pour obtenir la différence entre les deux :
double _currentTime = DateTime.Now.TimeOfDay.TotalMilliseconds;
double _elapsed = _currentTime - _startingTime;
if(_elapsed >= 500)
{
MessageBox.Show("As you command, master!");
_startingTime = _currentTime;
}
if(_currentTime < _startingTime)
_startingTime = _currentTime;
3 - Et enfin, parce que le TotalMilliseconds
renverra le nombre de millisecondes qui se sont écoulées depuis 00:00 (12 heures), ce qui signifie que lorsqu'il est minuit, la fonction TotalMilliseconds
sera égal à 0. Dans ce cas, je vérifie simplement si le _currentTime
est inférieure à la _startingTime
et, si c'est le cas, définir le _startingTime
à la _currentTime
pour que je puisse calculer à nouveau.
J'espère que cela vous aidera