タイトル : Re: 1秒間隔のタイマースレッドの時間が14msec長くなる 投稿日 : 2017/03/23(Thu) 15:30 投稿者 : Hongliang
タイマに指定されるIntervalは、基本的には処理と処理の間の最低間隔を保証するだけです。 Windowsの仕組み上厳密に等間隔に実施すること自体が不可能です。たとえミリ秒精度で等間隔に実施できたとしても、サブミリ秒の余りが蓄積すればミリ秒に容易に影響しますし。 比較的誤差が少なくする手法として、タイマの間隔を十分に短い時間に設定した上で、理想時刻を超えたタイミングでメインの処理を実施する、といった方法が考えられます。 例えば1秒間隔で処理したいとすると、 ・タイマ開始時に、開始時刻+1秒を理想時刻としてフィールドに保存する ・タイマのコールバックで、現在時刻と理想時刻を比較する。 現在時刻が理想時刻を超えていればメイン処理を実行し、理想時刻を1秒増やす。 超えていなければ今回のコールバックはすぐ返す。 |