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.结果图
  • 相关阅读:
    POJ 3710 Christmas Game#经典图SG博弈
    POJ 2599 A funny game#树形SG(DFS实现)
    POJ 2425 A Chess Game#树形SG
    LeetCode Array Easy 122. Best Time to Buy and Sell Stock II
    LeetCode Array Easy121. Best Time to Buy and Sell Stock
    LeetCode Array Easy 119. Pascal's Triangle II
    LeetCode Array Easy 118. Pascal's Triangle
    LeetCode Array Easy 88. Merge Sorted Array
    ASP.NET MVC 学习笔记之 MVC + EF中的EO DTO ViewModel
    ASP.NET MVC 学习笔记之面向切面编程与过滤器
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3049845.html
Copyright © 2011-2022 走看看