Windows下Event的包装类:CMyEventHelp

最近在写多线程的应用,事件来,事件去的,非常麻烦。
每个Event,都要初始化、释放、Set/Reset;一点点修改,就要改很 多处;搞得我头都大了。
今天写了个包装class,共享之:
#ifndef _MyEventHelp_h_DATE_2008_04_28_TIME_20_57_05_
#define _MyEventHelp_h_DATE_2008_04_28_TIME_20_57_05_

#include 
<windows.h>

class CMyEventHelp
{
public:
    CMyEventHelp(                
                    LPSECURITY_ATTRIBUTES lpEventAttributes 
= NULL,
                    BOOL bManualReset 
= FALSE,
                    BOOL bInitialState 
= FALSE,
                    LPCSTR lpName 
= NULL
                )
                : m_hEvent(NULL)
    {
        init(lpEventAttributes, bManualReset, bInitialState, lpName);
    }

    
~CMyEventHelp()
    {
        clear();
    }

public:
    HANDLE getHandle()
const {return m_hEvent;}
    
bool   set() {return (FALSE != ::SetEvent(m_hEvent));}
    
bool   reset() {return (FALSE != ::ResetEvent(m_hEvent));}

    HANDLE init(    
                    LPSECURITY_ATTRIBUTES lpEventAttributes 
= NULL,
                    BOOL bManualReset 
= FALSE,
                    BOOL bInitialState 
= FALSE,
                    LPCSTR lpName 
= NULL
                )
    {
        clear();
        m_hEvent 
= ::CreateEvent(lpEventAttributes, bManualReset, bInitialState, lpName);
        
return m_hEvent;
    }

    
void   clear() 
    {
        
if(NULL != m_hEvent)
        {
            ::CloseHandle(m_hEvent);
            m_hEvent 
= NULL;
        }
    };

    DWORD wait(DWORD dwTimeOut) 
const
    {
        
return ::WaitForSingleObject(m_hEvent, dwTimeOut);
    }

protected:
    HANDLE m_hEvent;
};

#endif // _MyEventHelp_h_DATE_2008_04_28_TIME_20_57_05_

posted on 2008-04-29 10:25 FongLuo 阅读(256) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

常用链接

留言簿

随笔分类(11)

随笔档案(79)

文章档案(1)

收藏夹(38)

学习网站

一般网站

最新随笔

搜索

积分与排名

最新评论

阅读排行榜