Sto usando System.Timers.Timer nella mia applicazione WPF. Voglio capire come si comporta il timer, dopo che il computer è ibernato, e dormire. Sto ricevendo alcuni strani problemi con la mia applicazione, dopo che il computer è stato ripreso dall'ibernazione.Comportamento di System.Timers.Timer nell'applicazione WPF, dopo la sospensione e la sospensione?
Come devo gestire i timer e come si comportano quando il computer è in modalità ibernazione/sospensione?
Ho un timer di mezzanotte che dovrebbe funzionare ogni mezzanotte per ripristinare i valori predefiniti sull'interfaccia utente.
Ecco il codice che crea il timer:
private void ResetMidnightTimer()
{
// kill the old timer
DisposeMidnightTimer();
_midnightTimer = new Timer();
// scheduling the timer to elapse 1 minute after midnight
_midnightTimer.Interval = (DateTime.Today.AddDays(1).AddMinutes(1) - DateTime.Now).TotalMilliseconds;
_midnightTimer.Elapsed += (_, __) => UpdateRecommendedCollectingTime();
_midnightTimer.Enabled = true;
_midnightTimer.Start();
}
Su contructor di pagina dell'interfaccia utente, chiamo il metodo che chiama ResestMidnightTimer() e crea il timer de facto. Dopo che il timer aspetta solo la notte.
Quando arriva la notte (in realtà sono le 12:01), il timer funziona, ripristina i valori predefiniti come previsto e quindi dispone il timer esistente. Alla fine crea un nuovo timer di mezzanotte per il giorno successivo. Ma se provo a sospendere il computer durante quel giorno, il timer di mezzanotte non funzionerà e non ripristineremo i valori predefiniti.
È perché, durante l'ibernazione, semplicemente posticipa la gestione degli eventi per lo stesso periodo di tempo in cui è stata ibernata?
Quali sono i problemi che stai vedendo (solo curiosi)? – M4N
@ M4N Ho modificato la domanda. – User1234