繁体   English   中英

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

[英]Should I Use An Always-Running Console Program on Server to Do Task

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

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

        while (true) {

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

        }
    }
}

我想知道这种方法是否对我要达到的目标效率很低。 我看到了一些有关使用任务计划程序的信息,所以我想知道是否应该使用它。 我正在使用Windows Server。 但我想知道为什么我不应该首先使用上述方法。 谢谢!

即使坚持使用这种方法,您仍然需要一种启动控制台应用程序的方法。 您不能仅登录并运行它,因为它在您注销后将终止。

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

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

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

如果您只有这个应用程式,建议您将其设为Windows服务。 在C#中,这非常简单。 从长远来看,如果您需要多个任务,那么拥有多个服务(甚至可能在多个服务器上)可能会很麻烦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM