- PR -

VBでのインターバルタイマ

投稿者投稿内容
りばぁ
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 130
お住まい・勤務地: 愛知県
投稿日時: 2004-02-04 10:52
こんにちわ。
ええっと、IRQとの関係は良く分かりませんが^^;
PCによって変わる可能性は否定出来ないと思います。

タイマーコントロールでのイベントは、設定した間隔ごとに
メッセージを飛ばしているわけで、
メッセージループは基本的にウィンドウに1つ持っている
だけなので(インターフェーススレッドの考え方です。
端折ります^^;)メッセージキューにメッセージが
たまっている状態では、タイマーイベントがいつ入るかは
不定です。
なので、精度が必要な場合は向かないと思います。
先のぼくのレスでAPIのマルチメディアタイマーを挙げたのは、
これは独自スレッドを起動しているので、上記の問題は発生
しない(はず)です。(自信なさげですが^^;)
。。が、先のレスでも言いましたが、VBで出来るかは分かりません^^;

長くなってしまいますし、今回の場合はタイマー自体の性能の問題なので
適用できないかもしれませんが、精度が必要な場合の実現方法の例でも、、、

まず、タイマーコントロールのインターバルは必要な間隔よりもずっと短くします。
(ここで、すでに今回の場合はダメというわけですが^^;)
そのイベント内でtimeGetTimeなどで時刻を取得し、前回時刻との比較により
時間経過をチェックし、必要な時間が経過した時に処理を行う。
という手順でどうでしょうか?
まぁ、これできっちり精度が出る訳ではありませんが^^;

スキルアップ/キャリアアップ(JOB@IT)