タイトル : Re^2: 1秒間隔のタイマースレッドの時間が14msec長くなる 投稿日 : 2017/03/23(Thu) 15:53 投稿者 : 還暦プログラマー
> タイマに指定されるIntervalは、基本的には処理と処理の間の最低間隔を保証するだけです。 > Windowsの仕組み上厳密に等間隔に実施すること自体が不可能です。たとえミリ秒精度で等間隔に実施できたとしても、サブミリ秒の余りが蓄積すればミリ秒に容易に影響しますし。 > > 比較的誤差が少なくする手法として、タイマの間隔を十分に短い時間に設定した上で、理想時刻を超えたタイミングでメインの処理を実施する、といった方法が考えられます。 > 例えば1秒間隔で処理したいとすると、 > ・タイマ開始時に、開始時刻+1秒を理想時刻としてフィールドに保存する > ・タイマのコールバックで、現在時刻と理想時刻を比較する。 > 現在時刻が理想時刻を超えていればメイン処理を実行し、理想時刻を1秒増やす。 > 超えていなければ今回のコールバックはすぐ返す。 Hongliang 様 回答、誠にありがとうございます。 タイマースレッドで、遅延時間が蓄積されて行くことを解除できないとすれば、ご指摘の方法しかないかな、、、とも思い始めておりました。 貴重なご指摘、ありがとうございます。 何の迷いもなく、その方法で進めて行きたいと思います。 今後も、宜しくお願い申し上げます。 |