MFC-创建,挂起,恢复线程
2016-04-02 15:34
381 查看
线程分为界面线程和工作线程
界面线程:
学过windows程序设计的都知道每一个窗口都有一个消息循环来处理各种消息.所以界面线程的机制和窗口过程差不多,是比较复杂的.
工作线程:
很简单的一种线程,只能用来打印输出循环等.不能进行消息处理.所以功能不是很强大,贵在简单.
创建工作线程的函数:
线程函数定义:
线程函数例子:
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.创建线程
2.挂起,暂停线程
3.恢复,继续线程
4.结束线程
5.查看线程状态
界面线程:
学过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("线程已经终止")); }
相关文章推荐
- g++编译命令选项
- 如何用正则表达式匹配中文
- [置顶] 教你如何在linux操作系统下玩【俄罗斯方块】高清+语音教程
- UITableView的优化
- PHP中的时区设置date.timezone
- curl_cmd curl命令整理 小技巧
- Hibernate主键生成策略
- 操作系统重要引论
- HD1142 穿越丛林
- 轮播图系列教程(五),左右切换,运动框架应用——和派孔明
- 上架被拒绝(个人总结)
- 在链接里使用thinkphp的U方法
- 大数乘法[JAVA实现]-经典笔试题
- HashMap 源码解析
- POJ1789 Truck History
- 面试题思考:Stack和Heap的区别
- linux基础之公共NTP服务器
- centos 7 安装JDK (Linux安装jdk)
- 排序算法
- centos 7 安装JDK (Linux安装jdk)