私は1分後に実行するようにタイマーを設定したときに、WindowsサービスでSystem.Threading.Timer
を使用しました。 12:00:00から開始します。この間隔system.threading.timerは機能しません
でexcuted12時00分00秒 12時00分59秒 12時01分00秒 12時02分○○秒 12時02分59秒
timer1[timer] =
new System.Threading.Timer(timerDelegate, obj, dueTime, interval);
タイマー
しかし、私は
12時00分00秒でexcuteたいです午前12時01分00秒 午前12時02分○○秒 12時03分○○秒
タイマーは午前12時〇〇分59秒で始めた理由?
iは、次のコード実行のための残りを設定している
宣言:タイマーコールバックメソッドで使用される
_interval[timer] = interval;
_startTime[timer] = DATeTime + dueTime;
それは完全にはなくウォーキングのWindows XPで同じアプリケーションを使用
long elapsedMs = Convert.ToInt64((dt - _startTime[timer]).TotalMilliseconds);
long intervalMs = Convert.ToInt64(_interval[timer].TotalMilliseconds);
long remainder = elapsedMs % intervalMs;
if (remainder != 0L)
{
timer1[timer].Change(
_interval[timer] - TimeSpan.FromMilliseconds(remainder),
_interval[timer]);
}
Windows 7の場合& windows server 2008が動作していません。
Threading.Timer
でこの問題を解決するにはどうすればよいですか?
短い答えは: 'Threading.Timer'を使わないでください。それは正確ではありません。高解像度のマルチメディアタイマーを使用する必要があります。 [この記事(http://www.codeproject.com/Articles/5501/The-Multimedia-Timer-for-the-NET-Framework)を参照してください。 – AVIDeveloper
Windows XPでの動作が完全にWindows 7でない理由 – user847455
Win7マシンがビジーで、WinXPがよりアイドルなのかもしれません。 WinXPマシンに多くのプロセスをオーバーロードして、ソリューションがまだ動作しているかどうかを確認することをお勧めします。マルチメディアタイマーを使用すると、それが実現します。 – AVIDeveloper