在线程
创建
并运行后,用户可以对线程执行
挂起
和
终止
操作.
所谓
挂起
,是指暂停线程的执行
,用户可以通过气候的
唤醒
操作来恢复线程的执行.
线程
终止
是指结束线程的运行.
系统提供了
SuspendThread,ResumeThread和TerminateThread
等函数来实现线程的
挂起、
唤醒
和停止
操作。
SuspendThread
该函数用于挂起线程.语法格式如下:
DWORD SuspendThread(HANDLE hThread);
- hThread: 表示线程句柄
- 返回值: 如果函数执行成功,返回值为之前挂起的线程次数;如果函数执行失败,返回值为0xFFFFFFFF
ResumeThread
该函数用于煎炒线程挂起的次数,如果线程挂起的次数为0,将
唤醒
线程.语法格式如下:
DWORD ResumeThread(HANDLE hThread);
- hThread: 表示线程句柄
- 返回值: 如果函数执行成功,返回值为之前挂起的线程次数;如果函数执行失败,返回值为0xFFFFFFFF
ExitThread
该函数用于结束当前线程.语法格式如下:
VOID ExitThread(DWORD dwExitCode);
- dwExitCode: 表示线程退出代码
TerminateThread
该函数用于强制
终止
线程的执行.语法格式如下:
BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode);
- hThread: 表示待终止的线程句柄
- dwExitCode: 表示线程退出代码
例子:
线程代码:
DWORD __stdcall ThreadProc(LPVOID lpParameter)
{
CMultiThreadDlg * pdlg = (CMultiThreadDlg *)lpParameter;
pdlg->m_ProCtrl.SetRange32(0,99999);
for (int i = 0; i < 99999; i++)
{
pdlg->m_ProCtrl.SetPos(i);
}
return 0;
}
创建
线程:
void CMultiThreadDlg::OnBtCreate()
{
m_hThread = CreateThread(NULL,0,ThreadProc,this,0,NULL);
}
挂起线程:
void CMultiThreadDlg::OnBtSuspend()
{
SuspendThread(m_hThread);
}
唤醒线程:
void CMultiThreadDlg::OnBtResume()
{
ResumeThread(m_hThread);
}
终止线程:
void CMultiThreadDlg::OnBtTerminate()
{
TerminateThread(m_hThread);
}
