Developing a scheduled task for Windows

一个人想着一个人 提交于 2019-12-22 03:44:25

问题


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?

回答1:


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.




回答2:


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.




回答3:


AFAIK the scheduler just kicks off a process. You can use the event log or another logging system to record the information you need to refer to later.




回答4:


Log4net is a very good, complete logging framework. I can highly recommend it.



来源:https://stackoverflow.com/questions/173431/developing-a-scheduled-task-for-windows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!