这是在 C# 中制作简单“调度程序”的可接受方式吗?
Posted
技术标签:
【中文标题】这是在 C# 中制作简单“调度程序”的可接受方式吗?【英文标题】:Is this an acceptable way to make a simple "scheduler" in C#? 【发布时间】:2010-09-15 05:15:05 【问题描述】:我正在.Net 中使用C# 制作一个简单的调度程序。它所做的只是每分钟对 SQL Server 数据库中的表执行一次简单的选择语句(这不需要扩展或任何东西......数据库没有高负载)。这是我建议的实现:
static void Main(string[] args)
while (true)
System.Threading.Thread.Sleep(timeout); // timeout is, say, 60000
CheckTable();
这样好吗?有什么更好的方法?
附言有人建议使用 Windows Forms Timer 类……但这似乎有点过头了。
干杯!
【问题讨论】:
本题相关:***.com/questions/169332 【参考方案1】:虽然它在技术上是合法的,但您可能最好使用计时器。它们不需要设置更多代码,您可以让运行时负责生成新线程。如果您需要在另一个程序中再次使用它,它也会造成性能瓶颈,而计时器不会。
计时器会添加更多代码,因为您需要使用计时器触发事件。
【讨论】:
这实际上取决于您是否希望多个线程同时运行同一个进程。【参考方案2】:关闭。
-
这将每(1 分钟 + 调用 proc 的时间)运行一次。也许没关系,也许不是。如果不行,您需要减去运行时间。
你应该在它周围有一个 try-catch 块。您不希望它仅仅因为临时数据库或网络问题而完全死掉。
【讨论】:
【参考方案3】:Quartz.net 是一个很好的时序需求解决方案。它很容易设置(网站上有很好的教程),并且比定时器更灵活。 CronTrigger 非常强大,而且易于配置。
【讨论】:
以上是关于这是在 C# 中制作简单“调度程序”的可接受方式吗?的主要内容,如果未能解决你的问题,请参考以下文章
react/flux- 子组件用户事件 - 一切都应该通过调度程序路由吗