MFC线程的挂起、唤醒和终止

时间:2022-03-17 14:32:59

1、创建一个基于MFC的基本对话框,命名为ThreadManage
2、在对话框窗口创建五个按钮和一个静态文本和一个进度条
_______________________________________
|    _____________________________                   |                          
|   线程管理                                                    |                   |
|   |                                                                   |                   |
|   |      |=====================|          |                   |
|   |                                                                   |                   |
|   |____________________________  |                   |
|                                                                                           |
|         |创建线程|   |挂起线程|   |唤醒线程|                      |
|                                                                                           |
|             | 终止线程|   | 取  消 |                                         |
|_______________________________________|
3、在CThreadManageDlg定义中添加一个成员函数

    HANDLE m_hThread;
4、使用类向导为进度条创建一个变量m_Prog。
5、在CThreadManageDlg定义中编写一个没有基类的线程函数,
在线程函数中设计一个较大的循环,显示进度条的进度。代码如下:
DWORD _stdcall ThreadProc(LPVOID lpParameter)
{
    CThreadManageDlg * pDlg=(CThreadManageDlg*)lpParameter;  //获取对话框指针
    pDlg->m_Prog.SetRange(0,99999);
    for(int i=0;i<99999;i++)
    {
        pDlg->m_Prog.SetPos(i);
    }
    return 0;
}
6、用类向导为按钮“创建线程”添加一个处理函数并进行编辑如下:
void CThreadManageDlg::OnBtCreate()
{
    m_hThread=CreateThread(NULL,0,ThreadProc,this,0,NULL);      //创建线程
}
7、用类向导为按钮“挂起线程”添加一个处理函数并进行编辑如下:
void CThreadManageDlg::OnBtsuspend()
{
    SuspendThread(m_hThrad);
}
8、用类向导为按钮“唤醒线程”添加一个处理函数并进行编辑如下:
void CThreadManageDlg::OnBtresume()
{
    ResumeThread(m_hThread);
}
9、用类向导为按钮“终止线程”添加一个处理函数并进行编辑如下:
void CThreadManageDlg::OnBtterminate()
{
    TerminateThread(m_hThread,0);
}
10、用类向导为按钮”取消“添加一个处理函数并编辑如下:
void CThreadManageDlg::OnCancel()
{
    exit(1);
}

完工!可以编译并运行了!

MFC线程的挂起、唤醒和终止