控制台应用程序间隔与线程睡眠
本文关键字:线程 应用程序 控制台 | 更新日期: 2023-09-27 17:56:38
我有一个控制台应用程序,它应该定期侦听远程数据库,如果有新值,那就做一些事情。
通常,我创建 Windows 任务计划程序作业以每 2 分钟运行一次此控制台应用程序。我认为另一种选择是,在控制台应用程序中,我将有一个代码,例如;
while(true)
{
ConnectDatabaseAndProcess();
System.Threading.Thread.Sleep(120000);
}
因此,我假设控制台应用程序将始终打开,并且将为每个进程等待 2 分钟并继续。在性能方面,它会有什么不同吗?
除非您的计算机过载,以至于每两分钟创建一个进程的时间会大量消耗资源,否则让您的程序坐在循环中等待两分钟是没有好处的,只是为了它可以轮询数据库。
使用计划任务的好处是,您可以更改计划任务的频率(每五分钟一次,或每小时一次,或其他任何时间),而无需修改程序。当然,您可以使用应用程序配置文件,但为什么呢?为什么复制操作系统中已经存在的功能,并且更灵活。
此外,对于计划任务,您知道程序将在下次重新启动计算机时再次启动轮询操作。如果您依赖程序来提供该延迟,则必须记住每次都启动它,或者将其放在启动任务列表中。
此外,当程序闲置时,它会占用其他进程可以使用的内存。
总而言之,使用计划任务是一种更加灵活和强大的解决方案。让程序始终运行所带来的任何边际性能增益(我们谈论的最多是一秒钟)都远远超过缺点。