我必须使用C#.net开发一个每天运行一次的应用程序。它最多只运行一分钟,所以开发Windows服务是过度的,而安排任务是合适的方式。
然而,关于应用程序如何传达其结果,我有几个问题:
- 如何向任务调度程序指示任务已失败?这是通过程序的退出代码吗
- 如何记录输出信息?控制台输出是自动捕获的,还是必须显式写入事件查看器
回答您的问题-
-
如果一个任务因为抛出未检查的异常而失败,您将在Sheduled task查看器中看到,将出现一个值类似
0xe0434f4d
的"Last Result"。或者,如果返回退出代码,该代码也将显示在Scheduled Task查看器的Last Result列中。 -
写入控制台(例如
Console.WriteLine("blah");
)不会显示在任何位置。您需要写入事件日志或日志文件。
如果采用日志文件的方式,则仍然可以使用Console.WriteLine("blah");
。诀窍是重定向标准输出和错误流:
StreamWriter mylog = new StreamWriter("mylog.log");
Console.SetOut(mylog);
Console.SetError(mylog);
您还需要经常刷新缓冲区,以确保日志文件包含当前信息。
Console.Out.Flush();
这既快又脏,你真的应该使用Windows事件日志或log4net。
AFAIK调度器只是启动一个进程。您可以使用事件日志或其他日志记录系统来记录以后需要参考的信息。
Log4net是一个非常好的、完整的日志框架。我强烈推荐它。