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

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


Hongliang 様

回答、誠にありがとうございます。
タイマースレッドで、遅延時間が蓄積されて行くことを解除できないとすれば、ご指摘の方法しかないかな、、、とも思い始めておりました。
貴重なご指摘、ありがとうございます。
何の迷いもなく、その方法で進めて行きたいと思います。

今後も、宜しくお願い申し上げます。

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

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