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