
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
基本的にWindowsOSでは正確な時間制御を行うことは不可能です。
OSには、リアルタイムOSとイベントドリブンOSがあります。
前者は、主に組み込み系OSで使われていて、時間資源の優先度に力を入れており、より高精度な時間指定ができます。
後者は、WindowsOS等で使われていて、マウス・キーボード、ほか全ての処理がMessageキューという場所に蓄積され、キューに蓄積された順番に処理を行うので、遅延が発生します。
今どのような方法で時間を計測しているのかわかりませんが、
http://dobon.net/vb/dotnet/system/stopwatch.html
このリンク先で紹介しているstopwatchクラスやWindowsAPIを使ってみてはどうでしょうか?
System.Timers.Timer
System.Threading.Time
System.Windows.Forms.Timer
よりは高精度な値が得られると思います。
が、最初に書いた通り、OSの仕組みとして多少遅延が発生します。
参考になりましたでしょうか?
この回答への補足
回答ありがとうございます。
すいません、説明不足でした。必要な精度はミリ秒まで合えば良い程度です。
無理矢理ですが以下のコードで出来ました。
//ミリ秒がiMS付近になるまで待つ
int iMS = 500;
const double waitMS = 0.5;
TimeSpan wait = TimeSpan.FromMilliseconds(waitMS);
int num = 0;DateTime t = null;
for (int i = (int)(5000.0 / waitMS); i > 0; i--)
{
t = DateTime.Now;
num = Mod(iMS - DTPost.Millisecond, 1000);
if (0 <= num && num <= 2) break;
Thread.Sleep(wait);
}
Console.WriteLine(t.Millisecond);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
特定の名前のオートシェイプの...
-
【C#】Page_Loadさせない方法に...
-
どう増強すべきか
-
シェルスクリプトでファイル内...
-
【VBA】エラー処理で別プロシー...
-
VB.NET SPRED(チェックボック...
-
順番に処理させたい
-
VBAでBook読み込み時の非表示方...
-
Excel VBA セルの名前があるか...
-
特定のファイルを他のプロセス...
-
シグナル 6(SIGABRT)とは?
-
入力した値が不正というよりイ...
-
VBA For Each 〜 複数条件について
-
途中で処理を中断させたい (ア...
-
C# 指定時間(秒間)の間処理を...
-
vbaのエラー対応(実行時エラー...
-
VisualBasic6でドラック&ドロ...
-
エクセル画面のちらつきなくす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
vbaのエラー対応(実行時エラー...
-
シグナル 6(SIGABRT)とは?
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
特定の名前のオートシェイプの...
-
途中で処理を中断させたい (ア...
-
特定のファイルを他のプロセス...
-
順番に処理させたい
-
Word VBA。各マクロの間に待ち...
-
StatusStripの表示が更新されな...
-
ドリブン??
-
ExcelのVBAで、選択したファイ...
-
RaiseEventのメリット
-
【VBA】エラー処理で別プロシー...
-
エクセルVBAでロックをかけたい
-
どうやってもFor文を抜けてしま...
おすすめ情報