WaitForSingleObject能接收到消息函数中的事件信号状态吗?
我在某个函数中使用了函数WaitForSingleObject来等待事件信号。在一个消息函数中设置事件为有信号状态。SetEvent(hEvent);请问WaitForSingleObject能收到这个信号,以有信号退出等待状态。 问题点数:20、回复次数:5Top
1 楼krh2001(边城浪子)回复于 2005-06-06 13:17:03 得分 5
当然可以,不过你的函数不能跟消息循环运行在同一个线程内Top
2 楼ye83241905(ye)回复于 2005-06-06 13:36:40 得分 0
krh2001(边城浪子) 麻烦你说得详细些。不能跟消息循环运行在同一个线程内 是什么意思?我是这样做,设置信号状态是在一个消息响应函数里。在另外一个函数里等待这个事件的状态变为有信号状态。
Top
3 楼JohnTitor(贱畜)回复于 2005-06-06 19:16:50 得分 5
也就是说执行等待这个事件的状态变为有信号状态的函数要由另外一个线程来执行,而不是你的UI线程Top
4 楼krh2001(边城浪子)回复于 2005-06-06 19:43:59 得分 10
楼上正解,试想. 如果你在主线程的某处调用了 WaitForSingleObject 来等待一个事件,但这个事件是在一个消息里被触发, 那么既然线程已经在执行等待了,怎么可能有机会去执行触发事件这里的代码?
所以,事件同步应该是两个不同的线程间的做的.Top
5 楼ye83241905(ye)回复于 2005-06-08 10:32:42 得分 0
再请教一个傻瓜问题。怎么知道WaitForSingleObject在主线程里呢?我的WaitForSingleObject是在一个消息响应函数里,这个函数要做很多事,做完一件事以后就等待某个消息,在这个消息里设置事件发生了,那个消息响应函数收到这个信号,就接着做下面的。刚才试了一下,可以接到这个事件信号,可是如果把等待时间设为无限,就没反应了,象死了一样。Top




