建立一个基于对话框的MFC工程,窗体上房一个按钮,创建一个CButton对象,在头文件中加入CEvent事件的头文件#include <afxmt.h> 和线程头文件 #include <process.h>,
在对话框工程头 .h 文件中声明一个线程处理函数(类外声明)。
UINT WINAPI ThreandOne(LPVOID pParam);
CEvent m_MyEvent(false,true); //创建一个CEvent手工事件,第一个参数为FALSE,所有要访问资源的线程必须等待,第二个参数为TRUE 表示为手工事件
HANDLE One;//一个句柄
int i = 0;
在Button处理函数中 添加如下代码:
CString m_str= NULL;
One = (HANDLE)_beginthreadex(0,0,ThreandOne,0,0,0);
while (1)
{
m_str.Format(_T("%d"),i);
m_MyButton.SetWindowText(m_str);
}
线程处理函数代码:
UINT WINAPI ThreandOne(LPVOID pParam){
while (1)
{
WaitForSingleObject(One,1000);
i++;
}
return 1;
}
运行程序,按钮上的数字会每隔一秒 加 1

本文通过创建一个基于对话框的MFC工程,演示了如何使用CEvent事件和线程进行同步操作。在对话框上设置一个按钮,当点击按钮时启动线程,线程通过CEvent事件控制按钮上显示的数字每秒递增1,展示了CEvent在多线程间的同步机制。
最低0.47元/天 解锁文章
432

被折叠的 条评论
为什么被折叠?



