2013-02-11 15 views
8

Ich benutze Timer von Timers Namespace. Was passiert mit dem Timer, wenn der PC in den Ruhezustand oder Ruhezustand wechselt?Was passiert mit dem Timer im Standby-Modus?

Ich habe Timer auf 6 Stunden Verzögerung eingestellt.

Was wird in diesen Situationen passieren.

1) Der Timer beginnt um Stunde 0 und geht sofort in den Ruhezustand/Ruhezustand. Dann wacht PC um Stunde 5. Wird mein Timer nach der nächsten 1 Stunde oder nach den nächsten 6 Stunden brennen?

2) Der Timer beginnt um Stunde 0 und geht sofort in den Ruhezustand/Ruhezustand. Dann wacht PC um Stunde 7. Wird mein Timer feuern, sobald der PC erwacht oder wird er das eine Mal "verfehlen" und in den nächsten 5 Stunden feuern? Wird es bis zum nächsten Ereignis von der Zeit des PC-Aufwachens oder vom vorherigen "verpassten" Ereignis zu zählen beginnen?

+0

Dies können Sie leicht selbst testen. Probieren Sie es aus und posten Sie eine Antwort. –

+0

Was waren die Ergebnisse, wenn Sie mit, sagen wir, 5 Minuten versuchten. Oder hast du es noch nicht ausprobiert? – I4V

+0

@HansPassant Ich sagte bei der Bitte um meine Frage, dass ich es jetzt nicht testen kann. – Hooch

Antwort

19

Ok. Ich fragte meinen Freund, und dies sind seine resutls:

23:21:32 : Timer started 
23:21:35 : PC Goes Sleep 
23:22:50 : PC Wakes 
23:22:50 : Timer fired 
23:23:50 : Timer fired 

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Threading; 

namespace Test 
{ 
    class Program 
    { 
     static System.Timers.Timer timer; 

     static void Main(string[] args) 
     { 
      timer = new System.Timers.Timer(); 
      timer.Interval = 60 * 1000; 
      timer.AutoReset = true; 
      timer.Elapsed += timer_Elapsed; 
      timer.Enabled = true; 

      Console.WriteLine(String.Format("{0}:{1}:{2} : Timer started", DateTime.Now.ToLocalTime().Hour, DateTime.Now.ToLocalTime().Minute, DateTime.Now.ToLocalTime().Second)); 

      timer.Start(); 

      Thread.Sleep(Timeout.Infinite); 
     } 

     static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
     { 
      Console.WriteLine(String.Format("{0}:{1}:{2} : Timer fired", DateTime.Now.ToLocalTime().Hour, DateTime.Now.ToLocalTime().Minute, DateTime.Now.ToLocalTime().Second)); 
     } 
    } 
} 

Also kurz gesagt. Nach dem Schlafen und Wecken Timer überprüft, ob es ein Ereignis verpasst hat. Wenn es einen verpasst hat, wird es bis zum nächsten Ereignis von 0 aus starten.

+3

-1 für Frage aber +1 für die Antwort . – I4V

+2

@ I4V warum -1 ?? Das ist eine gute Frage, und Hooch hat es selbst überprüft, weil niemand die richtige Antwort kennt. Groß! Er hat meine Zeit gerettet) –

Verwandte Themen