になるために私たちは現在、基本的に、我々は現在、私たちは迷っている時間間隔で実行できるタスク、日付、特定の時間などなどなどんDaylightsaving時間原因のDateTime計算は負
を予定している、当社のサービスの中核をrewrittingていますデイライトセービングが問題を引き起こす可能性がある場合は、基本的に、タスクを実行する曜日と、時間と間隔を考慮して、次に実行可能なランタイムを計算します。これを行うには、現在の時刻を取得し、このDateTimeに日/分/時間を追加します。
次に、この新しい実行時間をとり、このDateTimeからDateTime.Nowを減算して、次の実行まで時間を残します。
現在の時刻が昼間の01:50の場合、設定された間隔である20分を追加し、02:10の時刻で終了します。これは昼食禁止ですから、実際には01:10です。
01:10(実際には02:10)から現在の時刻(01:50)を引いたとき、これは負の値を返します。これは回避する必要があります。負の値を返すことはありません。 DateTimeは適切な情報を保持しているだけで長いですか?
基本的に、次のコードは、チェックが必要かどうかですか?
//Get interval between nextrun and right now!
double interval = (NextRun - DateTime.Now).TotalMilliseconds;
//Check if interval is ever less or equal to 0, should never happen but maybe with daylight saving time?
if(interval <= 0)
{
//Set default value
interval = IntervalInMilliseconds;
}
この検査は不要であると考えていますが、これまでの調査では明確な答えは得られていません。それはあなたがそれがどのように動作するかを理解するのに役立ちますよう
私はこれに遅刻していることを知っていますが、必要な間隔でサービス/ cronジョブを実行するようにOSに依頼してください。プログラムをよりシンプルにすることができたようです(つまり、日付の情報を扱うことはできません。起動したときはいつでも実行することを前提としていました)。これが考慮されなかったか、うまくいかない理由はありましたか? – ray