【问题标题】:Is this an acceptable way to make a simple "scheduler" in C#?这是在 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 类……但这似乎有点过头了。

干杯!

【问题讨论】:

标签: c# sql-server scheduling


【解决方案1】:

虽然它在技术上是合法的,但您可能最好使用计时器。它们不需要设置更多代码,您可以让运行时负责生成新线程。如果您需要在另一个程序中再次使用它,它也会造成性能瓶颈,而计时器不会。

计时器会添加更多代码,因为您需要使用计时器触发事件​​。

【讨论】:

  • 这实际上取决于您是否希望多个线程同时运行同一个进程。
【解决方案2】:

关闭。

  1. 这将每(1 分钟 + 调用 proc 的时间)运行一次。也许没关系,也许不是。如果不行,您需要减去运行时间。
  2. 你应该在它周围有一个 try-catch 块。您不希望它仅仅因为临时数据库或网络问题而完全死掉。

【讨论】:

    【解决方案3】:

    Quartz.net 是一个很好的时序需求解决方案。它很容易设置(网站上有很好的教程),并且比定时器更灵活。 CronTrigger 非常强大,而且易于配置。

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 2012-07-30
      • 2011-03-09
      • 2013-08-25
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多