工控编程吧
标题: 上位机MFC如何获得线程的退出码 [打印本页]
作者: qq263946146 时间: 2019-8-5 10:22
标题: 上位机MFC如何获得线程的退出码
线程函数退出时,会返回一个代码。
我们可以在函数内返回 不同的代码来判断线程执行情况。
如何获取线程返回代码?
可以直接使用函数GetExitCodeThread。
我们可以自己创建工程来测试,
可以事先从CWinThread派生两个类,
class CMyThread1 : public CWinThread这种形式。
在类初始化函数中起始退出线程,因为我们目的仅为测试。
- BOOL CMyThread1::InitInstance()
- {
- //退出线程,退出码1000。
- AfxEndThread(1000);
- return TRUE;
- }
复制代码
然后就是这两个类的使用,我们定义变量,初始化。
CMyThread1* m_pThread1;
HANDLE m_hThread2;
然后就可以调用两个按钮来查看实现效果
- void CGkbc8Dlg::OnButton1()
- {
- if (m_pThread1 != NULL)
- {
- delete m_pThread1;
- m_pThread1 = NULL;
- }
- //启动线程 初始为挂起状态
- m_pThread1 = (CMyThread1*)AfxBeginThread
- (RUNTIME_CLASS(CMyThread1),
- THREAD_PRIORITY_NORMAL,
- 0,
- CREATE_SUSPENDED);
- //线程结束时不自动撤销
- m_pThread1->m_bAutoDelete = FALSE;
- //恢复线程运行
- m_pThread1->ResumeThread();
- }
复制代码- void CGkbc8Dlg::OnButton4()
- {
- if (m_pThread1 == NULL)
- {
- return;
- }
- DWORD dwExitCode = 0;
- if (::GetExitCodeThread(m_pThread1->m_hThread, &dwExitCode))
- {
- if (dwExitCode == STILL_ACTIVE)
- {
- AfxMessageBox(_T("线程正在运行\n"));
- }
- else
- {
- CString strText = _T("");
- strText.Format("线程退出,退出码:%d\n", dwExitCode);
- AfxMessageBox(strText);
- }
- }
- }
复制代码 同样类2的使用类似。
这里准备一个例程给大家下载学习。
(, 下载次数: 0)