2012-02-07 3 views
3

私は、一定のタイムスパンではなく、1日に2回トリガーするタイマーを取得しようとしています。 コールバックを07:00とし、再度16:00にコールバックし、翌日の07:00にコールバックします。.NETTimeさまざまなTimeSpansを使用したTimerCallback?

それは私の逃亡だ何らかの理由で、これは難しいことが、私は、私は毎日新しいタイマーを作成し、それを殺すとその日の終わりしなければならないと思っていていないようですか?

答えて

4

理由だけではなく、すべての時間を刻み、その後、唯一の7時と16時のイベントに応答タイマーを持っていませんか?

var timer = new Timer(TimeSpan.FromHours(1).TotalMilliseconds); 
timer.Elapsed += TimerHandler; 

void TimerHandler(object sender, EventArgs e) { 
    var hour = DateTime.Now.Hour; 
    if (hour != 7 && hour != 16) { 
    return; 
    } 
    ... 
} 
+0

はいからライブラリを入手できます。基本的にポスターはTIMERは必要ありませんが、.NETフレームワークにはないmroe busienssレベルのスケジュールで作業できるスケジューラです。したがって、通常のタイマー+ロジックが動作するか、またはquartz.netのようなスケジューリングフレームワークが動作します。 – TomTom

+0

はい、スケジューラは物事を記述するためのより良い方法です。これは.NETMF(Netduino)であるので、私は十分に – TomCDona

+0

フェア(コールバックオブジェクトとタイムスタンプをキーとハッシュテーブルは、合理的なようです)私自身の圧延に見ていきます - その場合には、私はJaredParの提案で行くだろうか、どのくらいの時間がうまく次回実行してそのタイムアウトをタイムアウトに設定する必要があるまでです。 –

0

必要な機能を実行する必要がある場合は、1時間ごとにトリガーしてコールバックをチェックすることをお勧めします。後で時間を変更するか、1日あたりのトリガー量を変更する場合でも、タイマーを再作成せずに1つの場所で行うことができます。

など。本当に何かを行う時を保持し、毎時このリストをチェックするタイマー(拡張)クラスにリストを渡してください。

1

あなたが本当にこれを達成するために、長い実行中のタイマーを使用する必要がありますか?特定のタスクを実行するのを待っている場合は、必要なものを実行するコンソールアプリケーションを作成する方が良いでしょう。その後、必要に応じていつでもアプリケーションを実行するようにスケジュールされたタスクを設定することができます。 http://windows.microsoft.com/en-US/windows7/schedule-a-taskを参照してください。私はNETMFための「スケジューラ」ライブラリをオーサリングすることを決定し、このスレッドの情報に基づいて

+0

私はコメントの代わりにメインスレッドで言及すべきで、.NETMF(Netduino) – TomCDona

関連する問題