SleepEx

【勇芳软件工作室】汉化HomePreviousNext

SleepEx功能使当前线程进入等待状态,直到出现以下情况之一:

*调用I / O完成回调函数

*异步过程调用(APC)排队等待线程。

*经过了超时间隔

DWORD SleepEx

DWORD 【dwMilliseconds】,//超时间隔(以毫秒为单位)
BOOL 【bAlertable】//提前完成标志
); 

参数

【dwMilliseconds】

指定延迟发生的时间(以毫秒为单位)。值为零会使函数立即返回。INFINITE的值导致无限延迟。

【bAlertable】

指定功能是否由于I / O完成回调函数或APC而提前终止。如果【bAlertable】为FALSE,则该函数在超时时间之前不会返回。如果发生I / O完成回调,则该函数不返回,并且不执行I / O完成功能。如果APC排队到线程,则该函数不返回,并且不执行APC功能。

如果【bAlertable】为TRUE,并且调用此函数的线程与调用扩展I / O功能(ReadFileExWriteFileEx)的线程相同,则当超时时间过去或当I / O完成回调功能发生。如果发生I / O完成回调,则调用I / O完成功能。如果APC排队到线程(QueueUserAPC),则当定时器输出期间过去或调用APC功能时,该函数返回。

返回值

如果指定的时间间隔到期,返回值为零。

如果由于一个或多个I / O完成回调函数而返回的函数返回值为WAIT_IO_COMPLETION。只有【bAlertable】为TRUE,并且调用SleepEx函数的线程与调用扩展I / O功能的线程相同时才会发生。

备注

该函数可以与ReadFileExWriteFileEx功能一起使用,以挂起线程,直到完成I / O操作。这些功能指定在完成I / O操作时要执行的完成例程。对于要执行的完成例程,当完成回调函数发生时,调用I / O功能的线程必须处于可警告的等待状态。通过调用SleepExMsgWaitForMultipleObjectsExWaitForSingleObjectExWaitForMultipleObjectsEx,将该函数的【bAlertable】参数设置为TRUE,线程进入可警告的等待状态。

一个线程可以通过调用这个函数来休息其余的时间片,睡眠时间为零毫秒。

使用SleepEx和DDE时必须小心。如果一个线程创建任何窗口,它必须处理消息。DDE向系统中的所有窗口发送消息。如果您的线程使用等待功能,没有超时间隔,系统将会死锁。因此,如果您有一个创建窗口的线程,请使用MsgWaitForMultipleObjectsMsgWaitForMultipleObjectsEx,而不是SleepEx.

也可以看看

MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx, QueueUserAPC, ReadFileEx, 睡觉, WaitForMultipleObjectsEx, WaitForSingleObjectEx, WriteFileEx