我应该在服务器上使用始终运行的控制台程序来执行任务

时间:2015-04-09 05:18:50

标签: c# windows scheduled-tasks server

我想要实现的目标非常简单,并且可以通过如下所示的始终运行的控制台程序来实现:

class Program
{
    static void Main(string[] args)
    {

        while (true) {

            DateTime now = DateTime.Now;
            if(now==timeToRunTask)
                 runMyTask();//e.g. send an email to Joe

        }
    }
}

我想知道这种方法在我试图实现的目标方面是否非常低效。我看到了一些关于使用Task Scheduler的信息,所以我想知道是否应该使用它。我使用的是Windows Server。但我想知道为什么我不应该首先使用上述方法。谢谢!

2 个答案:

答案 0 :(得分:2)

即使你坚持这种方法,你仍然需要一种方法来启动控制台应用程序。您无法登录并运行它,因为它会在您注销时终止。

最简单的方法是使用Windows提供的工具,在本例中为Task Scheduler。您可以配置任务以按间隔启动应用程序。然后在应用程序中,只运行一次任务并退出。

如果您确实要求应用程序无限期运行,我建议您从控制台应用程序迁移到Windows服务。

答案 1 :(得分:1)

在服务器上,你几乎无法控制应用程序。例如。如果服务器重新启动(例如由于安装了更新),则必须手动重新启动应用程序。

如果您只有这个应用程序,我建议将其作为Windows服务。用C#做起来非常简单。如果从长远来看需要多个任务,那么拥有多个服务(甚至可能在多个服务器上)就可能变得非常麻烦。