少なくとも指定された時間だけ呼び出しスレッドを休止状態にします。
VOID Sleep( DWORD dwMilliseconds // time interval );
KERNEL32.DLL
スレッドを休止状態にする最低限の時間をミリ秒単位で指定します。
0を指定すると、スレッドは、実行の準備ができている同じ優先順位の別のスレッドに残りのタイムスライスを譲ります。そのようなスレッドがない場合は、関数は直ちに制御を返し、呼び出しスレッドは実行を継続します。
0xFFFFFFFF (INFINITE) を指定すると、無制限にスレッドを停止します。
戻り値はありません。
この関数は、スレッドが残りのタイムスライスを放棄し、少なくとも指定されたミリ秒数の間だけ非実行状態になります。その後、スレッドは実行可能状態になります。特に、0ミリ秒を指定した場合には、スレッドは残りのタイムスライスを放棄しますが、実行可能状態のままになります。実行可能状態のスレッドが直ちに実行されることは保証されていません。そのため、指定された時間が経過した後、しばらくの間はスレッドが実行されない可能性があります。
直接または間接的にウィンドウを作成するスレッドでSleep関数を使用する場合には注意が必要です。スレッドがウィンドウを作成する場合、スレッドはメッセージを処理しなければいけません。メッセージブロードキャストはシステム上の全ウィンドウに送信されます。Sleep関数を使用してウィンドウを持つスレッドを無制限に停止させると、システムがデッドロックを起こします。間接的にウィンドウを作成するコードの例はDDEとCOMのCoInitialize関数です。したがって、ウィンドウを作成するスレッドでは、Sleep関数ではなくMsgWaitForMultipleObjects関数またはMsgWaitForMultipleObjectsEx関数を使用するべきです。
Windows 95 以降 / Windows NT 3.1 以降