2012-05-08 10 views
1

私はWindowsサービスを扱っています。テストするのがとても難しいので、できるだけ空のままにしておきます。タイマーコンポーネントを使用せずにタイマーを使用できますか?

タイマーを使用して5分ごとにトリガーしてイベントを発生させる必要がありますが、タイマーコンポーネントを使用すると、Windowsサービスに配置する必要があります。

私自身の基本的なタイマークラスを構築することは可能ですか?

どうすればよいですか?私は非常に小さく軽く、できるだけ数行のコードにしたい。

+1

Windowsサービスは、* *とにかく 'System.Windows.Forms.Timer'コントロールを使用しないでください。 –

+0

クールなので、私はクラスでこれを行うことについて書くことをやっている?その後、クラスを使用するだけです。 – Pomster

答えて

5

を使用できSystem.Timers.TimerまたはSystem.Threading.Timer

// Create a timer with a ten second interval. 
System.Timers.Timer aTimer = new System.Timers.Timer(10000); 

// Hook up the Elapsed event for the timer. 
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 

// Set the Interval to 2 seconds (2000 milliseconds). 
aTimer.Interval = 2000; 
aTimer.Enabled = true; 

MSDNからのタイマ経過イベントハンドラ

// Specify what you want to happen when the Elapsed event is 
// raised. 
private static void OnTimedEvent(object source, ElapsedEventArgs e) 
{ 
    Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime); 
} 

あなたは文句を言わない、この場合には、タイマーコンポーネントを必要とすること

Here is the complete article on Timers in .Net 。ここでは、異なるタイプのタイマー間の完全な比較について説明します。

+0

リンクに感謝します。System.Timers.Timerをチェックアウトしました。これはタイマーコンポーネントなしで動作します。 – Pomster

+1

@Pomsterこの場合、タイマーコンポーネントは不要です – ABH

2

System.Threading.TimerまたはSystem.Timers.Timerをチェックしましたか?それはあなたが探しているものでなければなりません。

+0

私はSystem.Timers.Timerを検索し、最初のGoogle検索を読み上げました。今これはtimer componetなしで動作しますか? – Pomster

+1

はい、インスタンスを作成して使用してください。 –

0

Thread.Sleep(1000 * 60 * 5); //私の答えが小さすぎると、光がないので、フィラー。

...または、それはより「タイマーっぽい」forループを追加するには:

for(;;){ 
    timerEvent(); 
    Thread.Sleep(1000*60*5); 
}; 
+1

'Thread.Sleep'はタイマーではありません。 –

+0

OK、イベントを呼び出すループを追加しました。今はタイマーのように見えます。 –

+1

外見は欺くことができます。 'Thread.Sleep'はスレッド全体のブロッキング呼び出しです。それはタイマーとはかなり異なっています。 –

関連する問題