DOBON.NET DOBON.NETプログラミング掲示板過去ログ

C#2008での精度の良いタイマーについて

環境/言語:[VC#2008 WindowsXP Ver 3.5SP1]
分類:[.NET]

VC#標準のタイマーコントロールを使用し、50msec間隔で
通信データをCOMポートから送信しています。
しかし、タイマーコントロールでは精度に問題があるという話を聞きました。
なるべく50ms間隔でPCからデータ送信したい場合精度を求める処理(希望は2〜3msecの誤差)としてどのような方法がありますでしょうか?
精度の良いイベントタイマーについて教えて下さい。
■No23359に返信(YUUYAさんの記事)
> なるべく50ms間隔でPCからデータ送信したい場合精度を求める処理(希望は2〜3msecの誤差)としてどのような方法がありますでしょうか?
> 精度の良いイベントタイマーについて教えて下さい。

Stopwatchクラス
http://www.atmarkit.co.jp/fdotnet/dotnettips/412stopwatch/stopwatch.html
> なるべく50ms間隔でPCからデータ送信したい場合精度を求める処理
> (希望は2〜3msecの誤差)としてどのような方法がありますでしょうか?

その希望通りの誤差で実行することは不可能と考えておくべきです。
Windowsでは複数のプロセス・スレッドが同時に動き、そこまで細かい精度で動くことは保障されません。

ビジーループで経過時間を計る方法でも、似たような処理が2個、3個あった時に理想通りの動きは実現できません。

多少の誤差は許容できるように持って行けることが理想ですが、可能な選択肢を並べて一番良いと思える解決策を探すことになるかと思います。
回答ありがとうございます。返信が遅れて済みません。

Azuleanさんの回答によりシステム仕様の見直しを
図っている最中です。
> その希望通りの誤差で実行することは不可能と考えておくべきです。

またやじゅさんの回答にありましたStopwatchクラスについてもテストしています。

VC#(2008)を使用する条件下において
(1)Stopwatchクラス 
(2)マルチメディアタイマー
(3)WinAPIを使用する
を使用する他に精度の良いタイマーを構成する方法があれば
ご推奨の方法を引き続き教えて下さい。
※(1)→(2)→(3)の順に精度が良くなるのでしょうか?

DOBON.NET | プログラミング道 | プログラミング掲示板