[MFC]获取线程退出码

实例——获取线程退出码

1.添加两个CWinThread子类CMyThread1,CMyThread2;右击添加类-->选择MFC类-->类名:CMyThread1,CMyThread2;基类:CWinThread-->完成
// MyThread1.cpp : 实现文件

BOOL CMyThread1::InitInstance()

{

	// TODO: 在此执行任意逐线程初始化

	AfxEndThread(1000);//线程1的退出码

	return TRUE;

}

// MyThread2.cpp : 实现文件

BOOL MyThread2::InitInstance()

{

	// TODO: 在此执行任意逐线程初始化

	AfxEndThread(2000);//线程2的退出码

	return TRUE;

}
2.
CGetExitCodeThreadDlg::CGetExitCodeThreadDlg(CWnd* pParent /*=NULL*/)

	: CDialogEx(CGetExitCodeThreadDlg::IDD, pParent)

{

	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

	//成员变量

	// 	CWinThread* pThread1;

	// 	CWinThread* pThread2;

	pThread1=NULL;

	pThread2=NULL;

}

CGetExitCodeThreadDlg::~CGetExitCodeThreadDlg()

{

	if (pThread1)

	{

		delete pThread1;

		pThread1=NULL;

	}

	if (pThread2)

	{

		delete pThread2;

		pThread2=NULL;

	}

}

//启动线程1按钮事件

void CGetExitCodeThreadDlg::OnBnClickedButtonStart1()

{ 

	if (pThread1)

	{

		delete pThread1;

		pThread1=NULL;

	}

	pThread1=AfxBeginThread(RUNTIME_CLASS(CMyThread1),THREAD_PRIORITY_ABOVE_NORMAL,0,CREATE_SUSPENDED);

	pThread1->m_bAutoDelete=FALSE;

	pThread1->ResumeThread();

}

//启动线程2按钮事件

void CGetExitCodeThreadDlg::OnBnClickedButtonStart2()

{ 

	if (pThread2)

	{

		delete pThread2;

		pThread2=NULL;

	}

	pThread2=AfxBeginThread(RUNTIME_CLASS(CMyThread2),THREAD_PRIORITY_ABOVE_NORMAL,0,CREATE_SUSPENDED);

	pThread2->m_bAutoDelete=FALSE;

	pThread2->ResumeThread();

}

//获取线程1结束码按钮事件

void CGetExitCodeThreadDlg::OnBnClickedButtonExitcode1()

{ 

	if (pThread1 == NULL)

	{

		return;

	}

	DWORD exitCode=0;

	if (::GetExitCodeThread(pThread1->m_hThread,&exitCode))

	{

		if (exitCode == STILL_ACTIVE)

		{

			AfxMessageBox(_T("线程1已经启动"));

		}

		else

		{

			CString strCode;

			strCode.Format(_T("退出码:%d"),exitCode);

			AfxMessageBox(strCode);

		}

	}

}

//获取线程2结束码按钮事件

void CGetExitCodeThreadDlg::OnBnClickedButtonExitcode2()

{ 

	if (pThread2 == NULL)

	{

		return;

	}

	DWORD exitCode=0;

	if (::GetExitCodeThread(pThread2->m_hThread,&exitCode))

	{

		if (exitCode == STILL_ACTIVE)

		{

			AfxMessageBox(_T("线程1已经启动"));

		}

		else

		{

			CString strCode;

			strCode.Format(_T("退出码:%d"),exitCode);

			AfxMessageBox(strCode);

		}

	}

}

3.结果图 [MFC]获取线程退出码

 

你可能感兴趣的:(mfc)