2011-06-23 14 views
5

これは初めてのWindowsサービスです。私が行っているように学習しています。 VS 2010、Windows 7を使用して、タイマーを持つWindowsサービスを作成しています。私はGoogleで検索して、同様Use of Timer in Windows ServiceBest Timer for using in a Windows serviceをこのサイトを閲覧、私はまだVS 2010のWindowsサービスにSystem.Threading.Timerを追加する

私はservice1.csクラス内のOnStartメソッドとOnStopメソッドを持っているWindowsサービス・コンポーネントでタイマーをコードする場所へと混乱していている
関数を実行するタイマーをどこで記述しますか(Windowsサービスを起動しません)。

+0

あなたが実際に*サービスを開始するか、定期的にあなたのサービス*内*一部の機能を実行する*について話していますか? –

+0

サービス内の機能を定期的に実行する – user788487

答えて

6

以下は、これを行う方法の例です。サービスが停止するまで、10秒ごとにアプリケーションログ(イベントビューアに表示)にメッセージを書き込みます。あなたの場合は、定期的なロジックをOnElapsedEvent()メソッドに入れてください。

private System.Timers.Timer _timer = new System.Timers.Timer(); 

protected override void OnStart(string[] args) 
{ 
    _timer.AutoReset = true; 
    _timer.Interval = 10000; // 10 seconds 
    _timer.Elapsed += OnElapsedEvent; 
    _timer.Start(); 
} 

protected override void OnStop() 
{ 
    _timer.Stop(); 
} 

private void OnElapsedEvent(object sender, ElapsedEventArgs e) 
{ 
    // Write an entry to the Application log in the Event Viewer. 
    EventLog.WriteEntry("The service timer's Elapsed event was triggered."); 
} 

ここでは、Windowsサービスの使用を開始する際に役立つかもしれない詳細な回答がいくつかあります。

+0

ありがとうございました。それは私が必要としたものです。 – user788487

4

Windowsサービスがもたらすことができるさまざまなニュアンスを処理する代わりに、スケジュールされたタスクを使用して、小さなコンソールアプリケーションなどを実行する方が簡単でしょうか?

そうでない場合は、this c# articleまたはthis VB ArticleなどのWindowsサービスの作成に関する通常の記事を確認する必要があります。通常のサービスの実行方法(タイマーを使用しないサービス)を確認したら、タイマーコードをどこに追加するかを知っておく必要があります。

希望しますか?

+0

スケジュールされたタスクは数時間(私の場合は9時間)実行されないように見えます。コードのバグやタスクスケジューラの問題があるかどうかは不明です。しかし、この代替案は参考になるでしょう。私が働いているここのオペレーションは、どちらかで良いです。しかし、それは決定的要因かもしれません。 – TamusJRoyce

+0

@TamusJRoyce 4歳のスレッド。ご質問がある場合は、私に教えてください。がんばろう。 – Smudge202

関連する問題