为Windows开发计划任务

时间:2008-10-06 07:14:14

标签: .net scheduled-tasks

我必须使用C#.net开发一个必须每天运行一次的应用程序。它只运行最多一分钟,因此开发Windows服务是过度的,并且计划任务是适当的方式。

但是,我有一些关于应用程序如何传达其结果的问题:

  • 如何向任务计划程序指示任务已失败?这是通过程序的退出代码吗?
  • 如何记录输出信息?是自动捕获控制台输出还是我必须明确写入事件查看器?

4 个答案:

答案 0 :(得分:7)

回答你的问题 -

  1. 如果任务失败,因为它抛出了未经检查的异常,您会在Sheduled Task查看器中看到,会有一个“Last Result”,其值类似于0xe0434f4d。或者,如果您返回的退出代码也将显示在“计划任务”查看器的“最后结果”列中。

  2. 写入控制台,例如Console.WriteLine("blah");不会出现在任何地方。您需要写入事件日志或日志文件。

答案 1 :(得分:4)

如果您使用日志文件方式,仍然可以使用Console.WriteLine("blah");。诀窍是重定向标准 Out 错误流:

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

您还需要经常刷新缓冲区,以确保日志文件包含当前信息。

            Console.Out.Flush();

这很快,很脏,你真的应该使用 Windows事件日志log4net

答案 2 :(得分:0)

AFAIK调度程序只是启动一个进程。您可以使用事件日志或其他日志记录系统来记录稍后需要参考的信息。

答案 3 :(得分:0)

Log4net是一个非常好的完整日志框架。我强烈推荐它。