MFC-创建,挂起,恢复线程

线程分为界面线程和工作线程

界面线程:
学过windows程序设计的都知道每一个窗口都有一个消息循环来处理各种消息.所以界面线程的机制和窗口过程差不多,是比较复杂的.
工作线程:
很简单的一种线程,只能用来打印输出循环等.不能进行消息处理.所以功能不是很强大,贵在简单.

创建工作线程的函数:

CWinThread* AfxBeginThread( 
   AFX_THREADPROC pfnThreadProc,    //工作线程的函数
   LPVOID pParam,                   //线程的参数
   int nPriority = THREAD_PRIORITY_NORMAL, //线程优先级,默认
   UINT nStackSize = 0,             //栈大小,默认 
   DWORD dwCreateFlags = 0,         //创建标志,默认
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL //线程安全属性,默认 
); 

线程函数定义:

UINT 函数名(LPVOID lParam)
{
    //在这里处理数据
    return 0;
}

线程函数例子:
UINT Thread(LPVOID lParam)
{
for (int i = 0; i < 100;i++)
{
SetDlgItemText(AfxGetApp()->m_pMainWnd->m_hWnd, IDC_STATIC, (LPCTSTR)lParam);
Sleep(1000);
SetDlgItemText(AfxGetApp()->m_pMainWnd->m_hWnd, IDC_STATIC, TEXT(“”));
Sleep(1000);
}
return 0;
}

1.创建线程

m_pWinThread = AfxBeginThread(Thread, TEXT("线程开始");

2.挂起,暂停线程

m_pWinThread->SuspendThread();//暂停,挂起线程

3.恢复,继续线程

m_pWinThread->ResumeThread();//继续,恢复线程

4.结束线程

TerminateThread(m_pWinThread->m_hThread, 0);

5.查看线程状态

DWORD dwExitCode = 0;
    GetExitCodeThread(m_pWinThread->m_hThread, &dwExitCode);
    if (dwExitCode == STILL_ACTIVE)
    {
        AfxMessageBox(TEXT("线程正在运行"));
    } 
    else if(dwExitCode = EXCEPTION_SINGLE_STEP)
    {
        AfxMessageBox(TEXT("线程已经终止"));
    }

你可能感兴趣的:(mfc,工作线程,终止线程,创建线程,界面线程)