使用CEvent有感

 CEvent有自动和手动事件的区别,默认情况下创建一个CEvent对象是属于自动事件,自动事件当SetEvent后信号自动会处于OFF状态,但手动事件在SetEvent后信号一直是激活的,需要在ResetEvent后才能处于OFF状态.个人认为使用这个事件对象是在两个线程中比较常用.(仅仅个人意见而已,呵呵.....核武器)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个使用 `CEvent` 的示例代码: ```c++ class CMyWnd : public CWnd { public: CMyWnd(); // 定义 CEvent 对象 CEvent m_Event; // 定义线程函数 static UINT MyThread(LPVOID pParam); // 定义启动线程的函数 void StartMyThread(); DECLARE_MESSAGE_MAP() }; CMyWnd::CMyWnd() { // 创建事件对象 m_Event.Create(NULL, FALSE, FALSE, NULL); } BEGIN_MESSAGE_MAP(CMyWnd, CWnd) END_MESSAGE_MAP() UINT CMyWnd::MyThread(LPVOID pParam) { CMyWnd* pWnd = reinterpret_cast<CMyWnd*>(pParam); // 等待事件 DWORD dwResult = WaitForSingleObject(pWnd->m_Event.m_hObject, INFINITE); // 在这个函数中处理线程任务 // ... return 0; } void CMyWnd::StartMyThread() { // 创建线程 AfxBeginThread(MyThread, this); } ``` 在上面的示例代码中,我们定义了一个名为 `CMyWnd` 的窗口类,并声明了一个 `CEvent` 对象 `m_Event`。在类的构造函数中,我们使用 `Create` 函数创建了这个事件对象。然后,我们定义了一个线程函数 `MyThread`,在这个函数中,我们等待 `m_Event` 事件的触发,并在触发后处理线程任务。最后,我们定义了一个 `StartMyThread` 函数,用于创建线程并启动线程函数 `MyThread`。 在使用 `CEvent` 的方法中,我们通常会在一个线程中等待事件的触发,而在另一个线程中触发这个事件。例如,在主线程中可以调用 `StartMyThread` 函数来创建并启动一个新的线程,而在其他地方可以调用 `m_Event.SetEvent()` 函数来触发事件,从而使得线程可以继续执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值