Sviluppo di un'attività pianificata per Windows
-
05-07-2019 - |
Domanda
Devo sviluppare un'applicazione usando C # .net che deve essere eseguita una volta al giorno. Funziona per un massimo di un minuto, quindi lo sviluppo di un servizio Windows è eccessivo e un'attività pianificata è il modo appropriato.
Tuttavia, ho alcune domande su come l'applicazione può comunicare i suoi risultati:
- Come posso indicare all'utilità di pianificazione che l'attività non è riuscita? È tramite il codice di uscita del programma?
- Come posso registrare le informazioni di output? L'output della console viene acquisito automaticamente o devo scrivere esplicitamente al Visualizzatore eventi?
Soluzione
In risposta alle tue domande -
-
Se un'attività fallisce perché ha generato un'eccezione non selezionata, vedrai che nel visualizzatore Task Sheduled, ci sarà un 'Last Result' con un valore simile a
0xe0434f4d
. In alternativa, se si restituisce un codice di uscita che verrà visualizzato anche nella colonna Ultimo risultato del Visualizzatore attività pianificate. -
Scrivere sulla console, ad es.
Console.WriteLine (" blah ");
non comparirà da nessuna parte. Dovresti scrivere nel registro eventi o in un file di registro.
Altri suggerimenti
Se vai nel File di registro , puoi comunque utilizzare Console.WriteLine (" blah ");
. Il trucco è reindirizzare i flussi standard Out e Errore :
StreamWriter mylog = new StreamWriter("mylog.log");
Console.SetOut(mylog);
Console.SetError(mylog);
È inoltre necessario svuotare spesso i buffer, per assicurarsi che il file di registro contenga le informazioni correnti.
Console.Out.Flush();
Questo è veloce e sporco, dovresti davvero usare il Registro eventi di Windows o log4net .
AFAIK lo scheduler ha appena avviato un processo. Puoi utilizzare il registro eventi o un altro sistema di registrazione per registrare le informazioni a cui devi fare riferimento in seguito.
Log4net è un ottimo framework di registrazione completo. Lo consiglio vivamente.