System.Timerを使用してイベントをトリガーしています。現在、私はそれを1時間ごとに起動し、設定された値(日、時間)と一致するかどうかを確認します。特定の日時にタイマーを使用してイベントをトリガーする
ただし、特定の時刻にこれをトリガーすることは可能ですか?日曜日の12Amでのように。
Windowsタスクスケジューラが適切ですが、そのオプションではありません。事前
System.Timerを使用してイベントをトリガーしています。現在、私はそれを1時間ごとに起動し、設定された値(日、時間)と一致するかどうかを確認します。特定の日時にタイマーを使用してイベントをトリガーする
ただし、特定の時刻にこれをトリガーすることは可能ですか?日曜日の12Amでのように。
Windowsタスクスケジューラが適切ですが、そのオプションではありません。事前
なぜタイマーの間隔を目標日時に設定しないのかは不明です。ミリ秒数には制限があります。最大で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();
}
タイマーで
おかげで間隔のこの種をサポートしていませんが、あなたは、現在の日付と時間を20秒ごとにチェックすることができます。
編集ごめんなさい...あなたは(Aゼノタイマー)を確認するたびに間隔を半分にしてはどうでしょうか?
同様の状況で、これを達成するためにSystem.Threading.Timerを使用しています。基本的には、予定日時をdesiredDateTime - DateTime.Nowに設定して、desiredDateTimeにチェックを入れます。
また、別の日付を取得した場合は、Timer.Change()を使用してティック時刻を新しい日付に変更できます。あなたがもはやそれを必要としなくなったら、タイマーを廃棄することを忘れないでください!
DateOfWeekではなくDateOfWeekにタイマーを設定できますか?日曜日の午前12時または火曜日の午前1時のように?ありがとう – fireBand
もちろん、AddDays()を使用して、DayOfWeekとNow.DayOfWeekの間の日数をintにキャストします。値が負の場合は7を加えます。 –