スリープ機能だけでなく、c#遅延機能



C Delay Function Not Just Sleep Function



C#ウィンドウプログラムでは、メインスレッドでSleepが呼び出されると、Sleepが完了する前に、インターフェイスは一時停止されたアニメーション状態になり、操作に応答できなくなります。
非排他的遅延関数を実装します。遅延が古くなった場合でも、インターフェイスはメッセージに応答できます。

public static void Delay(int milliSecond) { int start = Environment.TickCount while (Math.Abs(Environment.TickCount - start)

Math.Abs​​()について:



内部APIであるEnvironment.TickCountは、DWORD GetTickCount()で実装されます。このプロパティの値は、システムタイマーから取得され、32ビットの符号付き整数として格納されます。したがって、システムが継続的に実行されている場合、TickCountはゼロからInt32に増分します。 MaxValueは約24。9日で、その後Int32にジャンプします。 MinValue(負の数)を入力してから、次の24。9日間はゼロにインクリメントします。 DWORDは符号なしであり、Environment.TickCountプロパティによって返される値は符号付きであるため、値の半分は負の数で表されます!

その他:
1. sleep()を使用して、スレッドをスリープ状態にします。
System.Threading.Thread.Sleep(1000)を、遅延が必要な場所に直接挿入します。
この方法が最も便利ですが、他の応答は遅延プロセス中に停止されます。メインスレッドで使用すると、プログラムが停止します。非同期操作がある場合も一時停止します。たとえば、webBrowserを使用してWebページをロードする場合、Webページがロードされるのをしばらく待ちたいのですが、sleepを使用すると、Webページのロードプロセスも一時停止します。



スレッドコントロールとタイマーコントロールの両方を使用できます。 Timer_Tick(...)を使用すると、他の関数でTimer_Tick(...)を呼び出すことができないため、使用するのが不便です。実際、これらは両方ともスレッドを使用します。マイクロソフトは、使用手数料をお勧めします。
C#のスレッドで実装されています:
System.Threadingの使用//名前空間の紹介
1.遅延10msコードは次のとおりです。
Thread.Sleep(10)
2.遅延1のコードは次のとおりです。
Thread.Sleep(1000)

通常、winform開発を行っているときは、プログラムを数秒間スリープさせる必要がある場合がありますが、thread.sleep()関数を直接使用すると、ページuiが応答を停止します。それを解決する方法は、UIの表示に関連するコードをシングルスレッド処理に入れることができます。次のアプローチを使用して、小さな関数okを追加することもできます。

/// /// delay function /// /// How many seconds do you need to delay? /// public static bool Delay(int delayTime) { DateTime now = DateTime.Now int s do { TimeSpan spand = DateTime.Now - now s = spand.Seconds Application.DoEvents() } while (s