在应用程序之间的消息中重复WaitForSingleObject

我在C(生产者和消费者)中创建了两个程序,它们互相发送消息(使用CreateEvent,SetEvent和WaitForSingleObject)

我为每个程序实现一个线程来使用WaitForSingleObject(myEvent,INFINITE)等待消息来管理这些消息

我把WaitForSingleObject放入循环中,以便及时重复并获取许多消息。

这在第一次工作正常,但其他时候WaitForSingleObject不等待消息,左代码运行在不定式循环中(包括WaitForSingleObject)

我测试删除两个程序的CloseHandle(myEvent),但没有结果

do {
//wait until the event received from another process
WaitForSingleObject(myrcvEvent, INFINITE);

//send the feeback event, if it is failed show a message
printf ("consumer: try to send the feedback eventn");
if (!SetEvent(myfeedbackEvent)) {
msgbox("consumer: Set feedbackEvent failed!");
        return;
 } else {

InvalidateRect(hWnd,NULL,TRUE); //redraw with new values
 }


//CloseHandle(myrcvEvent);
//CloseHandle(myfeedbackEvent);

Sleep(100);
} while(1);

哪里不对? 谢谢


你为什么使用这个事件? 使用信号量 - CreateSemaphore()API。

即使在使用这个信号的(不适当的)事件时,我也不希望持续循环作为一个生产者,一个消费者和一个自动重置事件的症状 - 发布你的代码。

链接地址: http://www.djcxy.com/p/30799.html

上一篇: repeating WaitForSingleObject in messages between to applications

下一篇: How to timeout a thread