0

この質問は についてSystem.Threading.Thread.Sleep(int)です。10 進数値のメソッドがないことはわかっていますが、実際には 10 進数を扱う必要があります。

1度回転するのに20.37ミリ秒かかるデバイスがあります。したがって、20.37 の適切な乗算 (2 度 = 20.37*2 など) のために、コードをスリープ状態にする必要があります。スレッド クラスには 10 進数のスリープ メソッドがないため、どうすればこれを行うことができますか?

4

5 に答える 5

0

コメントで指摘されているように、Thread.Sleep100% 正確ではありません。ただし、次のように、ミリ秒をティックに変換し、新しいものを作成しTimeSpanてメソッドを呼び出すことにより、(理論的には) 20.27 ミリ秒待機させることができます。

Thread.Sleep(new TimeSpan(202700)) 
//202700 is 20.27 * TimeSpan.TicksPerMillisecond (which is 10,000)

繰り返しますが、これはおそらく 100% 正確ではありません (Thread.Sleep は少なくともその時間だけを保証するため)。しかし、それが十分に正確であれば、問題ありません。

于 2013-05-19T17:55:18.407 に答える
-3

回避策として、少し数学を使用できます。極度に正確である必要はないが、全体的にフロートの正確なスリープが必要であると仮定しましょう。

Thread.Sleep(new Random().Next(20,21)); これにより、最大 20.5 のスリープ タイミングが得られるはずです。今すぐ想像力を働かせてください。

TotalSleeps / attempts = 「必要な値である必要があります」が、単一のスリープ間隔の場合、これは当てはまりません。

以前にインスタンスを作成する new Random() を使用しないでください。

于 2018-09-25T23:12:28.367 に答える