tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: 1秒間隔のタイマースレッドの時間が14msec長くなる
投稿日: 2017/03/23(Thu) 15:30
投稿者Hongliang
タイマに指定されるIntervalは、基本的には処理と処理の間の最低間隔を保証するだけです。
Windowsの仕組み上厳密に等間隔に実施すること自体が不可能です。たとえミリ秒精度で等間隔に実施できたとしても、サブミリ秒の余りが蓄積すればミリ秒に容易に影響しますし。

比較的誤差が少なくする手法として、タイマの間隔を十分に短い時間に設定した上で、理想時刻を超えたタイミングでメインの処理を実施する、といった方法が考えられます。
例えば1秒間隔で処理したいとすると、
・タイマ開始時に、開始時刻+1秒を理想時刻としてフィールドに保存する
・タイマのコールバックで、現在時刻と理想時刻を比較する。
 現在時刻が理想時刻を超えていればメイン処理を実行し、理想時刻を1秒増やす。
 超えていなければ今回のコールバックはすぐ返す。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。