繁体   English   中英

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

[英]Console Application Interval vs Thread.Sleep

我有一个控制台应用程序应该定期监听远程数据库,如果有一个新的值,然后做一些东西。

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

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

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

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

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

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

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

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

暂无
暂无

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

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