<Return[WXYZ]><Top>
WaitForSingleObjectEx |
Declare Function Api_WaitForSingleObjectEx& Lib "kernel32" Alias "WaitForSingleObjectEx" (ByVal hHandle&, ByVal dwMilliseconds&, ByVal bAlertable&) |
||||||||||
Declare Function WaitForSingleObjectEx Lib "kernel32" Alias "WaitForSingleObjectEx" (ByVal hHandle As Long, ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long |
|||||||||||
次のいずれかの状態になると、制御を返す。 |
|||||||||||
パラメータ I/O 完了ルーチンや APC がキューに置かれていなくても、制御が返る。0 を指定すると、この関数はオブジェクトの状態を調べ、I/O 完了 ルーチンや APC がキューに置かれているかどうかをチェックし、即座に制御を返す。INFINITE を指定すると、条件が満たされるまで待機
し続ける。 返り、その I/O 完了ルーチンや APC 関数が実行される。FALSE を指定すると、制御は返らず、その I/O 完了ルーチンや APC 関数も実
行されない。 び出し側スレッドと読み書き操作を開始したスレッドが同じ場合にのみ、その完了ルーチンが呼び出される。QueueUserAPC 関数を呼び出
すと、APC がキューに置かれる。
関数が失敗すると、-1 が返る。拡張エラー情報を取得するには、 関数を使う。
解説
び出し側スレッドは待機状態に入る。条件が満たされるのを待機している間、そのスレッドはプロセッサ時間を消費しない。
を返した場合にのみ、そのオブジェクトに変更を加える。たとえば、セマフォオブジェクトのカウントを 1 つ減らす。 ンドウを作成した場合、そのスレッドはそのウィンドウに関係するメッセージを処理しなければなりません。また、メッセージのブロードキャスト (同報送信)が発生した場合、システム内のすべてのウィンドウへそのメッセージが送信される。タイムアウト時間として INFINITE を指定し て待機関数を呼び出していた場合、このような現象が発生すると、システムはデッドロック状態に陥ることがある。ウィンドウを間接的に作成 する 2 つの例として、DDE と COM の CoInitialize がある。そのため、ウィンドウを作成するスレッドでは、WaitForSingleObjectEx 関数 ではなく、MsgWaitForMultipleObjects または MsgWaitForMultipleObjectsEx 関数を使う。 |