控制台应用程序间隔与Thread.Sleep

时间:2013-01-30 18:56:49

标签: c# console-application thread-sleep

我有一个应该定期监听远程数据库的控制台应用程序, 如果有新值,那就做一些事情。

通常我会创建Windows任务计划程序作业,每2分钟运行一次此控制台应用程序。 我认为另一种选择,在控制台应用程序中我将有一个代码,如;

while(true)
{
  ConnectDatabaseAndProcess();
  System.Threading.Thread.Sleep(120000);
}

所以我假设控制台应用程序将始终打开,并且每个进程将等待2分钟并继续。 在表现方面,它会有什么不同吗?

1 个答案:

答案 0 :(得分:2)

除非您的计算机过载,否则每两分钟创建一个进程的时间是一个巨大的资源消耗,让您的程序在循环中等待两分钟没有任何好处,只是为了它可以轮询数据库

使用计划任务的好处是您可以更改计划任务频率(每五分钟一次,或每小时一次,或其他任何一次),而无需修改程序。当然,您可以使用应用程序配置文件,但为什么?为什么要复制操作系统中已存在的功能,并且更加灵活。

此外,对于计划任务,您知道程序将在下次重新启动计算机时再次启动轮询操作。如果您依赖程序来提供延迟,则必须记住每次都启动它,或者将它放在启动任务列表中。

此外,当程序闲置时,占用内存可供其他进程使用。

总而言之,使用预定任务是一种更灵活,更强大的解决方案。任何边际性能提升(我们说的最多只有一秒)都不会使程序始终运行,这远远超过了它们的缺点。