2009-04-16 18 views
1

Wie kann ich einen Timer in meiner Konsolenanwendung verwenden? Ich möchte, dass meine Konsolenanwendung im Hintergrund arbeitet und beispielsweise alle 10 Minuten etwas tut.Wie kann ich einen Timer in meiner Konsolenanwendung verwenden?

Wie kann ich das tun?

Dank

+4

Nur zu beachten: Es ist sehr einfach, eine Konsolenanwendung zu töten. Wenn dieser Hintergrundjob wichtig ist, wählen Sie die Windows-Service-Implementierung. Oder betrachten Sie Nandos Post über WTS. – boj

Antwort

2

Sie können nur die Windows-Taskplaner verwenden, um Ihre Konsole-Anwendung alle 10 Minuten zu laufen.

+0

Dies ist wahrscheinlich der beste Weg, dies zu tun. –

4

Konsolenanwendungen sind nicht unbedingt für eine lange Laufzeit vorgesehen. Davon abgesehen, können Sie es tun. Um sicherzustellen, dass die Konsole nicht einfach beendet wird, muss die Konsolenschleife in Console.ReadLine auf eine Beendigungszeichenfolge wie "quit" warten.

Um Ihren Code alle 10 Minuten auszuführen, rufen Sie System.Threading.Timer auf und zeigen Sie ihn in einem 10-Minuten-Intervall auf Ihre Ausführungsmethode.

public static void Main(string[] args) 
{ 
    using (new Timer(methodThatExecutesEveryTenMinutes, null, TimeSpan.FromMinutes(10), TimeSpan.FromMinutes(10))) 
    { 
     while (true) 
     { 
      if (Console.ReadLine() == "quit") 
      { 
       break; 
      } 
     } 
    } 
} 

private static void methodThatExecutesEveryTenMinutes(object state) 
{ 
    // some code that runs every ten minutes 
} 

EDIT

Ich mag Boj Kommentar zu Ihrer Frage, though. Wenn Sie eine lange laufende Anwendung benötigen, sollten Sie den Aufwand für einen Windows-Dienst beachten. Es gibt einen gewissen Entwicklungsaufwand, aber Sie erhalten eine viel stabilere Plattform, auf der Sie Ihren Code ausführen können.

+1

danke, aber dieser Beispielcode funktioniert nicht – Gold

+0

Was funktioniert daran nicht? Ich habe es getestet, bevor ich es gepostet habe. Setzen Sie einfach eine Console.WriteLine in methodThatExecutesEveryTenMinutes und ändern Sie FromMinutes (10) in FromSeconds (5), um zu verifizieren. Es wird alle fünf Sekunden auf die Konsole gedruckt. –

+0

@MichaelMeadows Ihre Antwort ist, was ich suche, aber Windows-Dienst gibt Ihnen keine Rückmeldung, wie console.writeline, also, wenn Sie Konsolenanwendung offen halten, können Sie Ausgaben aus dem Programm überprüfen, um sicherzustellen, dass es gut läuft . Es ist eine Art Selbstbericht. –

Verwandte Themen