2011-01-24 7 views
2

System.Timerを使用してイベントをトリガーしています。現在、私はそれを1時間ごとに起動し、設定された値(日、時間)と一致するかどうかを確認します。特定の日時にタイマーを使用してイベントをトリガーする

ただし、特定の時刻にこれをトリガーすることは可能ですか?日曜日の12Amでのように。

Windowsタスクスケジューラが適切ですが、そのオプションではありません。事前

答えて

9

なぜタイマーの間隔を目標日時に設定しないのかは不明です。ミリ秒数には制限があります。最大で2^31ミリ秒(27日間)です。あなたはその範囲にとどまることができる限り、あなたは良いでしょう。

private static void SetTimer(Timer timer, DateTime due) { 
     var ts = due - DateTime.Now; 
     timer.Interval = ts.TotalMilliseconds; 
     timer.AutoReset = false; 
     timer.Start(); 
    } 
+0

DateOfWeekではなくDateOfWeekにタイマーを設定できますか?日曜日の午前12時または火曜日の午前1時のように?ありがとう – fireBand

+1

もちろん、AddDays()を使用して、DayOfWeekとNow.DayOfWeekの間の日数をintにキャストします。値が負の場合は7を加えます。 –

0

タイマーで

おかげで間隔のこの種をサポートしていませんが、あなたは、現在の日付と時間を20秒ごとにチェックすることができます。

編集ごめんなさい...あなたは(Aゼノタイマー)を確認するたびに間隔を半分にしてはどうでしょうか?

0

同様の状況で、これを達成するためにSystem.Threading.Timerを使用しています。基本的には、予定日時をdesiredDateTime - DateTime.Nowに設定して、desiredDateTimeにチェックを入れます。
また、別の日付を取得した場合は、Timer.Change()を使用してティック時刻を新しい日付に変更できます。あなたがもはやそれを必要としなくなったら、タイマーを廃棄することを忘れないでください!

関連する問題