Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Developing a scheduled task for Windows

I have to develop an application using C#.net that has to be run once a day. It only runs for at most one minute, so developing a Windows service is overkill and a scheduled task is the appropriate way.

However, I have a few questions about how the application can communicate its results:

  • How do I indicate to the task scheduler that the task has failed? Is this via the program's exit code?
  • How do I log output information? Is console output automatically captured or do I have to write to the event viewer explicitly?
like image 402
jan.vdbergh Avatar asked Oct 06 '08 07:10

jan.vdbergh


2 Answers

In answer to your questions -

  1. If a task fails because it threw an unchecked exception you'll see that in the Sheduled Task viewer, there will be a 'Last Result' with a value something like 0xe0434f4d. Alternatively if you return an exit code that will be also be shown in the Last Result column of the Scheduled Task viewer.

  2. Writing to the console e.g. Console.WriteLine("blah"); won't show up anywhere. You'd need to write to the event log or to a log file.

like image 65
Kev Avatar answered Oct 25 '22 04:10

Kev


If you go the Log File way, you can still use Console.WriteLine("blah");. The trick is to redirect the standard Out and Error streams:

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

You also need to flush the buffers often, to make sure the log file contains current information.

            Console.Out.Flush();

This is quick and dirty, you really should use the Windows Event Log or log4net.

like image 27
gimel Avatar answered Oct 25 '22 04:10

gimel