您的位置:首页 > 其它

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

2016-04-02 15:34 381 查看
线程分为界面线程和工作线程

界面线程:

学过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("线程已经终止"));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: