WaitForSingleObject在等什么?满足它的条件就可以了。
解决方案 »
- COM被调用时的当前路径是什么?
- 一个简单的MSCOMM控件问题!谢谢了
- 关于tab control控件的问题
- 通过资源创建的控件,如何响应创建消息
- 不是一般人能回答的问题
- 一调用HttpOpenRequest就跳出一个诊断宏,急死我了
- HEAP: Free Heap block 376160 modified at 37618c after it was freed
- 求ODBC连接数据库,并对数据进行查询修改操作实例。
- 如何列出所有驱动器?
- 一个tooltip的奇怪问题!100分,进来就有
- ERP是什么的缩写?
- CTabCtrl和CPropSheet + CPropertyPage有什么异同?
可以查看中debug windows中的threads
比如说等一个用户连接,而现在没有用户,或者等待一个内核计时器有信号,这时要终止他,怎么办?
HANDLE hQuitEvent = CreateEvent(...);
那个WaitForSingleObject不要无限等待,可以放在一个循环中,比如:
while(1)
{
...
//这里用WaitForSingleObject等待结束事件
if(WaitForSingleObject(hQuitEvent, 0) == WAIT_OBJECT_0)
break;
// 这里不要无限等待
WaitForSingleObject([your object]...);
...
}
想终止线程时只要SetEvent(hQuitEvent);
不过这样效率较低。
终止事件和要等的东西一起等,无限等待,设置只要有一个有信号就返回,根据返回值判断是终止还是所要等的资源有效了。
这样就可以了。
HANDLE hWaitHandle[2];
hWaitHandle[0]=CreateEvent();
hWaitHandle[1]=YourObject;
//把WaitForSingleObject改成WaitForMultiObject
//如果线程外SetEvent()或你的线程结束,Wait..返回
if ( WaitForMultiObject() < WAIT_OBJECT_0 + 2 )
{
//退出
}
}