当我调用WaitForSingleObject获得互斥量后,退出时再调用ReleaseMutex,返回FALSE,我已经不止一次遇到了,换成信号量实现相同的功能也会在ResetEvent上返回FALSE,后来我换成CriticalSection才把问题解决,清高手指点这是什么原因。

解决方案 »

  1.   

    建议仔细看看MSDN,然后做个例子程序多学习下
      

  2.   

    if (::WaitForSingleObject(pCCard->m_hSendDataMutex, 0)==WAIT_OBJECT_0)
    {
    EscapeCommFunction(pCCard->m_hCom, CLRRTS);
    ::ReleaseMutex(pCCard->m_hSendDataMutex);
    }上面是那段代码EscapeCommFunction(pCCard->m_hCom, CLRRTS);是向串口发送指令,不会影响到互斥量操作,关键就是ReleaseMutex返回了FALSE调用GetLassError却提示操作成功,而这段代码也不是每次调用都出现这个问题。
      

  3.   


    ::WaitForSingleObject(pCCard->m_hSendDataMutex, 5000L)试试行吗?
      

  4.   

    真是一句话点醒梦中人那,谢谢crystal521(水晶泪),我是用CreateEvent创建的现在改过来就好了。