WaitForSingleObject 的问题
WaitForSingleObject的问题最近在Windows Mobile 上使用基于SmartDevice的ActiveX的时候,遇到了一些问题,就是执行一个简简单单的启动程序的函数,如ShellExecuteEx... 就会导致机器死机。关于这个问题,后来,发现是由于WaitForSingleObject函数导致。
下面就介绍一下WaitForSingleObject函数的使用:
WaitForSingleObject
当指定的对象处于有信号状态或者等待时间结束的状态时,此函数返回。
DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
);
参数:
hHandle:指定对象或事件的句柄;
dwMilliseconds: 等待时间,以毫妙为单位,当超过等待时间时,此函数将返回。如果该参数设置为0,则该函数立即返回,如果设置为INFINITE,则该函数直到有信号才返回。
返回值:
如果此函数成功,该函数的返回之标识了引起该函数返回的事件。返回值如下:
WAIT_ABANDONED(0x00000080L)
指定的对象是一个互斥对象,该对象没有被拥有该对象的线程在线程结束前释放。互斥对象的所有权被同意授予调用该函数的线程。互斥对象被设置成为无信号状态。
WAIT_OBJECT_0 (0x00000000L)
指定的对象出有有信号状态。
WAIT_TIMEOUT (0x00000102L)
超过等待时间,指定的对象处于无信号状态
如果失败,返回 WAIT_FAILED;
备注:
此函数检查指定的对象或事件的状态,如果该对象处于无信号状态,则调用线程处于等待状态,此时该线程不消耗CPU时间
一些需要注意的问题:
线程函数:
<div style="">http://www.cnblogs.com/Images/OutliningIndicators/None.gifDWORD WINAPI ThreadProc(
http://www.cnblogs.com/Images/OutliningIndicators/None.gif while(!bTerminate)
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif http://www.cnblogs.com/Images/dot.gif{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif // 从一个链表中读取信息并且插入到CListCtrl中
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif // CListCtrl的句柄是通过线程参数传递进来的
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif for(;;)
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif http://www.cnblogs.com/Images/dot.gif{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif ReadInfoFromList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif InsertToCListCtrl();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif }
http://www.cnblogs.com/Images/OutliningIndicators/None.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
页:
[1]