在Delphi中,可以使用WaitForSingleObject函數(shù)來(lái)等待一個(gè)對(duì)象的信號(hào)狀態(tài)變?yōu)榭捎?。該函?shù)的語(yǔ)法如下:
function WaitForSingleObject(hHandle: THandle; dwMilliseconds: DWORD): DWORD; stdcall;
其中,hHandle參數(shù)是要等待的對(duì)象的句柄,dwMilliseconds參數(shù)是等待的時(shí)間長(zhǎng)度(單位為毫秒)。
下面是一個(gè)使用WaitForSingleObject函數(shù)的示例:
var??hEvent:?THandle; begin
??//?創(chuàng)建一個(gè)事件對(duì)象
??hEvent?:=?CreateEvent(nil,?False,?False,?nil);
??if?hEvent?<>?0?then
??begin
????//?等待事件對(duì)象的信號(hào)狀態(tài)變?yōu)榭捎?/p>
????if?WaitForSingleObject(hEvent,?INFINITE)?=?WAIT_OBJECT_0?then
????begin
??????//?事件對(duì)象的信號(hào)狀態(tài)為可用,執(zhí)行相應(yīng)的操作
??????ShowMessage('Event?signaled');
????end;
????//?關(guān)閉事件對(duì)象
????CloseHandle(hEvent);
??end; end;
在上述示例中,首先使用CreateEvent函數(shù)創(chuàng)建了一個(gè)事件對(duì)象,并將其句柄保存在hEvent變量中。然后,調(diào)用WaitForSingleObject函數(shù)等待事件對(duì)象的信號(hào)狀態(tài)變?yōu)榭捎?,在等待期間,程序會(huì)一直阻塞。如果等待成功,即WaitForSingleObject函數(shù)返回WAIT_OBJECT_0,表明事件對(duì)象的信號(hào)狀態(tài)已經(jīng)可用,此時(shí)可以執(zhí)行相應(yīng)的操作。最后,使用CloseHandle函數(shù)關(guān)閉事件對(duì)象。