2012-02-08 5 views
0

私は2つの異なるタイムイベントを実行する1つのWindowsサービスを作成しようとしています。これは私が持っているものです、私はそれが私がそれを意図していることを確認したいだけです。2つのタイムイベント1つのWindowsサービス

私が意図しているのは、1つのプロセスを30分ごとに実行し、1つのプロセスを1時間に1回実行することです。

public static System.Timers.Timer timer1; 
    public static System.Timers.Timer timer2; 

    public Crawler_Coupon() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     ControlStation(); 
    } 

    private static void ControlStation() 
    { 

     timer1 = new Timer(); 
     timer1.Interval = 1800000; 
     //timer1.Interval = 10000; 
     timer1.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
     timer1.Start(); 

     timer2 = new Timer(); 
     timer2.Interval = 3600000; 
     //timer1.Interval = 10000; 
     timer2.Elapsed += new ElapsedEventHandler(OnTimedEvent2); 
     timer2.Start(); 

    } 
+0

お手数をおかけしていただきありがとうございます。がんばろう。 – JohnFx

+0

コードが完璧に動作するはずです。問題は何ですか? –

答えて

1

[更新]

これは、Windowsサービスにする必要があることを具体的な理由はありますか?間欠的なタスクを実行するためのWindowsサービスを作成することはベストプラクティスではありません。

これらの間隔で実行されるコンソールアプリケーションまたは2およびセットアップ2のスケジュールされたタスクを作成することができます。

Windows Service with multiple timers

+0

これは難しいことですが、2つに分割する可能性がある場合 –

+0

タイミング間隔の共通要因である単一のタイマーを使用できます。あなたは30分ごとに一度オフになるタイマーを設定し、あなたが1人1人をしてからどれくらいの時間が経過したか、それを行うかどうかをチェックします。 – marcellscarlett

2

[UPDATED]

理由だけではなく、あなたのプロセスの実行をスケジュールするWindowsタスクスケジューラを使わないのでしょうか?

+0

私はバックグラウンド処理とセキュリティのためのサービスとしてそれを保持したいです。 –

+0

申し訳ありませんが、私は "Windowsタスクスケジューラ"を使用することを意味しました。 「ユーザーがログオンしているかどうかにかかわらず実行する」オプションを使用すると、タスクスケジューラがバックグラウンド(非対話型デスクトップ)でタスクを実行します。 – ahazzah

関連する問題