Event是windows的核心对象,有限,如果资源不足就申请不到。
如API函数CreateEvent就有可能不成功。
1)而CEvent似乎总能成功,他的构造函数不抛出异常;他也没有其他初始化函数。
这是怎么回事?
2)CEvent是怎样实现的?给个思路。

解决方案 »

  1.   

    CEvent::CEvent(BOOL bInitiallyOwn, BOOL bManualReset, LPCTSTR pstrName,
    LPSECURITY_ATTRIBUTES lpsaAttribute)
    : CSyncObject(pstrName)
    {
    m_hObject = ::CreateEvent(lpsaAttribute, bManualReset,
    bInitiallyOwn, pstrName);
    if (m_hObject == NULL)
    AfxThrowResourceException();
    }
      

  2.   

    CEvent::CEvent(BOOL bInitiallyOwn, BOOL bManualReset, LPCTSTR pstrName,
    LPSECURITY_ATTRIBUTES lpsaAttribute)
    : CSyncObject(pstrName)
    {
    m_hObject = ::CreateEvent(lpsaAttribute, bManualReset,
    bInitiallyOwn, pstrName);
    if (m_hObject == NULL)
    AfxThrowResourceException();
    }VC98\MFC\MTEX.CPP 
    你打个断点(F9),  再跟进(F11)就看到了.
      

  3.   

    这说明构造函数能抛出异常,只不过msdn中没说。对吧?