私はWindowsサービスを扱っています。テストするのがとても難しいので、できるだけ空のままにしておきます。タイマーコンポーネントを使用せずにタイマーを使用できますか?
タイマーを使用して5分ごとにトリガーしてイベントを発生させる必要がありますが、タイマーコンポーネントを使用すると、Windowsサービスに配置する必要があります。
私自身の基本的なタイマークラスを構築することは可能ですか?
どうすればよいですか?私は非常に小さく軽く、できるだけ数行のコードにしたい。
私はWindowsサービスを扱っています。テストするのがとても難しいので、できるだけ空のままにしておきます。タイマーコンポーネントを使用せずにタイマーを使用できますか?
タイマーを使用して5分ごとにトリガーしてイベントを発生させる必要がありますが、タイマーコンポーネントを使用すると、Windowsサービスに配置する必要があります。
私自身の基本的なタイマークラスを構築することは可能ですか?
どうすればよいですか?私は非常に小さく軽く、できるだけ数行のコードにしたい。
を使用でき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 。ここでは、異なるタイプのタイマー間の完全な比較について説明します。
System.Threading.TimerまたはSystem.Timers.Timerをチェックしましたか?それはあなたが探しているものでなければなりません。
私はSystem.Timers.Timerを検索し、最初のGoogle検索を読み上げました。今これはtimer componetなしで動作しますか? – Pomster
はい、インスタンスを作成して使用してください。 –
Thread.Sleep(1000 * 60 * 5); //私の答えが小さすぎると、光がないので、フィラー。
...または、それはより「タイマーっぽい」forループを追加するには:for(;;){
timerEvent();
Thread.Sleep(1000*60*5);
};
'Thread.Sleep'はタイマーではありません。 –
OK、イベントを呼び出すループを追加しました。今はタイマーのように見えます。 –
外見は欺くことができます。 'Thread.Sleep'はスレッド全体のブロッキング呼び出しです。それはタイマーとはかなり異なっています。 –
Windowsサービスは、* *とにかく 'System.Windows.Forms.Timer'コントロールを使用しないでください。 –
クールなので、私はクラスでこれを行うことについて書くことをやっている?その後、クラスを使用するだけです。 – Pomster