CEvent eventWriteD.SetEvent();

CEvent eventWriteD;
char g_Array[10];

UINT WriteW(LPVOID pParam);
UINT WriteD(LPVOID pParam);

void CMultiThread9Dlg::OnWritew() 
{
	// TODO: Add your control notification handler code here
	CWinThread *pWriteW=AfxBeginThread(WriteW,
		&m_ctrlW,
		THREAD_PRIORITY_NORMAL,
		0,
		CREATE_SUSPENDED);
	pWriteW->ResumeThread();
	
	CWinThread *pWriteD=AfxBeginThread(WriteD,
		&m_ctrlD,
		THREAD_PRIORITY_NORMAL,
		0,
		CREATE_SUSPENDED);
    pWriteD->ResumeThread();	
}
/*
  仔细分析这两个线程函数, 
您就会正确理解CEvent 类。
线程WriteD执行到 WaitForSingleObject(eventWriteD.m_hObject,INFINITE);
处等待,直到事件 eventWriteD为有信号该线程才往下执行,
因为eventWriteD对象是自动事件,
则当WaitForSingleObject()返回时,
系统自动把eventWriteD对象重置为无信号状态。
  */
UINT WriteW(LPVOID pParam)
{
	CEdit *pEdit=(CEdit*)pParam;
	pEdit->SetWindowText("");
	for(int i=0;i<10;i++)
	{
		g_Array[i]='W';
		pEdit->SetWindowText(g_Array);
		Sleep(1000);
	}
	//eventWriteD.SetEvent();
	/*
	BOOL CEvent::SetEvent();
    将 CEvent 类对象的状态设置为有信号状态。
	如果事件是人工事件,则 CEvent 类对象保持为有信号状态,
	直到调用成员函数 ResetEvent()将 其重新设为无信号状态时为止。
	如果CEvent 类对象为自动事件,则在SetEvent()将事件设置为有信号状态后,
	CEvent 类对象由系统自动重置为无信号状态。	  
    如果该函数执行成功,则返回非零值,否则返回零。	
	*/
	return 0;	
}

UINT WriteD(LPVOID pParam)
{
	CEdit *pEdit=(CEdit*)pParam;
	pEdit->SetWindowText("");
	WaitForSingleObject(eventWriteD.m_hObject,INFINITE);
	for(int i=0;i<10;i++)
	{
		g_Array[i]='D';
		pEdit->SetWindowText(g_Array);
		Sleep(1000);
	}
	return 0;	
}

void CMultiThread9Dlg::OnBtnSetevent() 
{
eventWriteD.SetEvent();	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值