Frage

Ich muss eine Anwendung entwickeln mit C # .net, die einmal pro Tag ausgeführt werden muss. Es läuft nur für höchstens eine Minute lang so einen Windows-Dienst entwickeln, ist übertrieben und eine geplante Aufgabe ist der geeignete Weg.

Allerdings habe ich ein paar Fragen darüber, wie die Anwendung ihre Ergebnisse miteinander kommunizieren können:

  • Wie kann ich mit dem Task-Scheduler anzuzeigen, dass die Aufgabe ausgefallen? Ist dies über das Exit-Code des Programms?
  • Wie melde ich mich Ausgabeinformationen? Ist Konsolenausgabe automatisch erfasst oder muss ich auf die Ereignisanzeige schreiben explizit?
War es hilfreich?

Lösung

In Antwort auf Ihre Fragen -

  1. Wenn eine Aufgabe fehlschlägt, weil es eine ungeprüfte Ausnahme ausgelöst hat, dass in der eingeplante Aufgabe Zuschauer sehen werden, wird es eine ‚Letztes Ergebnis‘ sein mit einem Wert etwas wie 0xe0434f4d. Alternativ, wenn Sie einen Exit-Code zurück, die auch in der letzten Spalte Ergebnis des Geplanten Task-Viewer.

  2. angezeigt wird
  3. Schreiben an die Konsole z.B. Console.WriteLine("blah"); zeigt nicht überall auf. Sie müssen in das Ereignisprotokoll oder in eine Protokolldatei.

  4. schreiben

Andere Tipps

Wenn Sie gehen die Log-Datei So können Sie noch Console.WriteLine("blah"); verwenden. Der Trick ist, den Standard Out und Fehler Ströme umleiten:

        StreamWriter mylog = new StreamWriter("mylog.log");
        Console.SetOut(mylog);
        Console.SetError(mylog);

Sie müssen auch oft die Puffer spülen, um die Protokolldatei aktuelle Informationen enthält, stellen Sie sicher.

            Console.Out.Flush();

Das ist schnell und schmutzig, sollten Sie wirklich verwenden Sie die Windows-Ereignisprotokoll oder log4net .

AFAIK der Scheduler startet nur einen Prozess. Sie können das Ereignisprotokoll oder eine andere Logging-System verwenden, um die Informationen, die Sie später verweisen müssen aufzuzeichnen.

Log4net ist ein sehr gutes, komplettes Logging-Framework. Ich kann es sehr empfehlen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top