【发布时间】:2012-04-25 13:51:09
【问题描述】:
我在辅助线程中有这段代码:
DWORD result = WaitForSingleObject(myhandle,10000);
if(result == WAIT_OBJECT_0){
AfxMessageBox(_T(...));
}
else if(result == WAIT_TIMEOUT){
AfxMessageBox(_T("Timeout"));
}
有时,并非总是如此,几乎会在调用 WaitForSingleObject 时立即调用超时(甚至不会延迟 1 秒)。
我做错了吗?对更稳定的替代品有什么建议吗?
编辑:
myhandle 在类构造函数中创建为:
myhandle = CreateEvent(NULL,FALSE,FALSE,_T("myhandle"));
它会被另一个函数调用:
SetEvent(myhandle);
关键是它在我执行 SetEvent 时有效,问题是它有时会在调用 WaitForSingleObject 时立即超时,即使它应该等待 10 秒。
【问题讨论】:
-
你还在等什么?我的句柄从何而来?
-
等待前后有没有检查
GetLastError()?