1

.Net で C# を使用して単純なスケジューラを作成しています。SQL Server DB のテーブルで単純な select ステートメントを 1 分に 1 回実行するだけです (これはスケーリングなどの必要はありません... db の負荷は高くありません)。これが私の提案された実装です:

static void Main(string[] args)
{
    while (true)
    {
        System.Threading.Thread.Sleep(timeout); // timeout is, say, 60000
        CheckTable();
    }
}

これでよろしいですか?より良い方法は何ですか?

ps 誰かが Windows Forms Timer クラスの使用を提案しました...しかし、それはやり過ぎのようです。

乾杯!

4

3 に答える 3

4

技術的には合法ですが、おそらくタイマーを使用する方がよいでしょう。設定するコードはそれほど多くなく、ランタイムに新しいスレッドの生成を任せることができます。これを別のプログラムで再度使用する必要がある場合、タイマーでは発生しないパフォーマンスのボトルネックも発生します。

ただし、タイマートリガーイベントを使用する必要があるため、タイマーはさらにコードを追加します。

于 2008-10-03T23:26:49.860 に答える
1

近い。

  1. これは (1 分 + proc を呼び出す時間) ごとに実行されます。大丈夫かもしれないし、そうじゃないかもしれない。OK でない場合は、実行にかかった時間を差し引く必要があります。
  2. その周りに try-catch ブロックが必要です。一時的なデータベースまたはネットワークの問題のためだけに完全に停止することは望ましくありません。
于 2008-10-04T04:46:35.707 に答える
1

Quartz.netは、タイミングのニーズに適したソリューションです。セットアップは非常に簡単で (サイトの優れたチュートリアル)、タイマーよりもはるかに柔軟です。CronTrigger は非常に強力で、設定も簡単です。

于 2009-02-21T19:33:05.533 に答える