1


0

私は。NETでC#で簡単なスケジューラを作っています。 SQL Server DB内のテーブルに対して単純なselectステートメントを1分に1回実行するだけです(これはスケール変更などは必要ありません…​ データベースは高負荷ではありません。 これが私が提案した実装です。

static void Main(string [] args){while(true){System.Threading.Thread.Sleep(timeout);} //タイムアウトは、たとえば60000 CheckTable()です。 }}

これでいい? もっと良い方法は何ですか?

PS 誰かがWindowsフォームタイマークラスを使うことを提案しました…​ しかし、それはやり過ぎのようです。

乾杯!

3 Answer


4


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

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


1


閉じる。

  1. これは毎回実行されます(procを呼び出すために1分の時間)。 たぶんそれは大丈夫です、多分それは違います。 うまくいかない場合は、実行に要した時間を差し引く必要があります。

  2. その周りにtry-catchブロックがあるはずです。 一時的なデータベースやネットワークの問題だけで完全に消滅することは望ましくありません。


1


http://quartznet.sourceforge.net/[Quartz.net]はタイミングのニーズに適したソリューションです。 セットアップは非常に簡単で(サイト上の優れたチュートリアル)、Timersよりもはるかに柔軟性があります。 CronTriggerは本当に強力で、設定も簡単です。