msdn で、タイマーは正確な間隔 (私の場合は 1 秒) で起動することを保証できませんが、間隔の前に起動しないことを読みました。
一方の PC のタイマーは正常に動作しており (Windows 7)、もう一方の PC (Windows Server 2003) は0.99999936 seconds
.
なぜこのようなことが起こっているのか、私は非常に興味があります。
newSeconds = newSeconds + delta.Seconds
これに気づいたのは、 Where isまでの秒数を数えるコードdelta
があったからですDateTime.Now - lastTime
秒の部分は1
、Windows 7 および0
Windows Server 2003 で表示されていました。
解決策は を読むだけでしたtotalseconds
が、それでもなぜ以前に発砲しているのか疑問に思います。
誰でもこれについて詳しく説明できますか?
編集
私は実際に2つの異なるWindows 2003 PCでそれが起こっています。私の疑問は、OS 間に違いがあるのか、7 と 2003 で .net フレームワーク 4 が異なるのか、さらに深く掘り下げますか? または、人々が知っている可能性のある他の逸脱はありますか? タイマーはどのように実装されていますか? ハードウェア関連の問題でしょうか?
そして、これとは 対照的に、インターバル時間の前に C# タイマーが起動します 。ティックごとに常に発生しています。長時間運転する必要はありません。ありがとう
編集
public void OnTick(object sender, EventArgs e)
{
var delta = DateTime.Now - _lastTime;
DoStuff
_lastTime = DateTime.Now
}