zoukankan      html  css  js  c++  java
  • [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.结果图
  • 相关阅读:
    SQL Server 查看正在运行的事务信息的 2 种方法。
    SQL Server 查看正在运行的事务信息的 2 种方法。
    js防抖和限流
    js防抖和限流
    CSS cursor 属性
    CSS cursor 属性
    JS-中使用Math.round(x)保留1位小数点
    I/O系列教材 (一)- Java 的File类,以及常用方法
    异常处理系列教材 (五)- Java 自定义异常
    异常处理系列教材 (四)- java Throwable接口
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3049845.html
Copyright © 2011-2022 走看看