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