DelphiのWaitForSingleObjectの使い方

デルファイにおいては、WaitForSingleObject関数を用いてオブジェクトのシグナルステータスが利用可能になるのを待つことができます。関数の構文は以下のとおりです。

function WaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD; stdcall;

1つの hHandle 引数は待つべきオブジェクトのハンドルで、dwMilliseconds 引数は待ち時間の長さ(ミリ秒)です。以下は WaitForSingleObject 関数を使用する 1 つの例です。

var

hEvent: THandle; begin

 

// 创建一个事件对象

 

hEvent := CreateEvent(nil, False, False, nil);

 

if hEvent <> 0 then

 

begin

 

// 等待事件对象的信号状态变为可用

 

if WaitForSingleObject(hEvent, INFINITE) = WAIT_OBJECT_0 then

 

begin

 

// 事件对象的信号状态为可用,执行相应的操作

 

ShowMessage(‘Event signaled’);

 

end;

 

// 关闭事件对象

 

CloseHandle(hEvent);

 

end; end;


上記のサンプルでは、まずCreateEvent関数を用いてイベントを作成、そのハンドルをhEvent変数に保持します。次に、WaitForSingleObject関数を呼び出してイベントのシグナル状態が利用可能になるのを待ちますが、この待ち時間中はプログラムはブロックされます。待ちが成功した場合(WaitForSingleObject関数がWAIT_OBJECT_0を返した場合)、イベントのシグナル状態は利用可能であることを表し、このとき対応する処理を実行します。最後に、CloseHandle関数を用いてイベントを閉じます。

bannerAds