ファームウェアの一部を c# で書かれた GUI に移植しています。そうだと分かった
nop()
実際には何もせず、実行を数クロックサイクル遅らせる関数です。
nop ()を使用すると、ファームウェアでの実行が 2 ミリ秒遅れるとします。c#で物事を遅らせるにはどうすればよいですか?
前もって感謝します、
System.Threading.Thread.Sleep(milliseconds);
GUI のメイン スレッドを数ミリ秒以上ブロックすることは、一般的に悪い考えであることに注意してください。数ミリ秒後に起動するタイマーを使用して、その間にイベント処理を実行できるようにすることをお勧めします。また、何らかの I/O を実行する前に一時停止したい場合は、代わりに非同期 I/O を使用することを検討してください。
また、Windows も .NET もリアルタイムの保証を提供しないことに注意してください。への呼び出しThread.Sleep(2)
は少なくとも 2 ミリ秒間一時停止しますが、そのスレッドはそれを超える数ミリ秒間実行を再開しない場合があります。
Thread.Sleep(1000);
現在の実行を 1 秒間スリープさせます。
例えば:Thread.Sleep(2);
ただし、ウィンドウの最小解像度は約 15 ミリ秒であるため、正確に 2 ミリ秒にならない可能性があることに注意してください。詳細については、C# での Thread.Sleep(1) の影響は何ですか? を参照してください。
厳密なタイミングが必要な場合、Thread.Sleep はお勧めできません。
代わりにタイマー付きの Manual/Auto ResetEvents を使用することをお勧めしSystem.Timers
ます。