[MFC]线程的挂起与恢复
来源:互联网 发布:厦门大学软件学院 编辑:程序博客网 时间:2024/05/12 23:33
实例——线程的挂起与恢复
关键代码:
CDemoThreadDlg::CDemoThreadDlg(CWnd* pParent /*=NULL*/): CDialogEx(CDemoThreadDlg::IDD, pParent){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);pThread=NULL;mThreadParam.nData=0;}CDemoThreadDlg::~CDemoThreadDlg(){if (pThread){::WaitForSingleObject(pThread->m_hThread,INFINITE);//有问题:当线程是挂起的状态时,这时退出会出现无法退出的情况delete pThread;pThread=NULL;}}//启动线程按钮事件void CDemoThreadDlg::OnBnClickedButtonStart(){ if (pThread){DWORD exitCode=0;if (::GetExitCodeThread(pThread->m_hThread,&exitCode)){if (exitCode == STILL_ACTIVE){AfxMessageBox(L"线程已经启动。");return;} }}mThreadParam.hWnd=m_hWnd;pThread=AfxBeginThread(ThreadFun,&mThreadParam,THREAD_PRIORITY_ABOVE_NORMAL,0,CREATE_SUSPENDED);pThread->m_bAutoDelete=FALSE;pThread->ResumeThread();}//线程函数UINT ThreadFun(LPVOID pParam){ THREAD_PARAM* pThreadParam=(THREAD_PARAM*)pParam;for (int i=0;i<50;i++){pThreadParam->nData++;::PostMessage(pThreadParam->hWnd,WM_MSG,0,0);Sleep(100);}return 0;}//挂起线程按钮事件void CDemoThreadDlg::OnBnClickedButtonSuspend(){ if (pThread){pThread->SuspendThread();/*DWORD SuspendThread( );返回值:如果成功,则返回线程原来的挂起计数值;否则返回0xFFFFFFFF。说明:增加当前线程的挂起计数。如果线程的挂起计数大于零,则该线程将不被执行。线程可以通过调用ResumeThread成员函数恢复执行。*/}}//恢复线程按钮事件void CDemoThreadDlg::OnBnClickedButtonResume(){ if (pThread){pThread->ResumeThread();/*DWORD ResumeThread( );返回值:如果成功,则返回线程的原挂起计数值;否则返回0xFFFFFFFF。如果返回值为零,则表示当前线程没有被挂起。如果返回值为1,线程被挂起,但是即将重新启动。任何大于1的返回值都表明线程将继续挂起。说明:调用这个函数以使被SuspendThread成员函数所挂起的线程恢复执行,或者使用CREATE_SUSPENDED标志创建的线程恢复执行。当前线程的挂起计数被减小1。如果挂起计数被减小到0,线程将恢复执行;否则线程继续被挂起。*/}}
结果图:
- [MFC]线程的挂起与恢复
- 线程的挂起与恢复
- 线程的挂起与恢复
- 线程的挂起与恢复
- 线程的挂起与恢复
- 线程挂起与恢复
- 线程挂起与恢复
- MFC-创建,挂起,恢复线程
- linux线程的挂起与恢复
- C# 线程的挂起与恢复
- C# 线程的挂起与恢复
- 线程挂起恢复与终止
- 线程的挂起和恢复
- Linux中对线程的挂起与恢复的实现
- Java线程的挂起与恢复 wait(), notify()方法介绍
- linux中线程的挂起与恢复(进程暂停)
- linux中线程的挂起与恢复(进程暂停)
- linux中线程的挂起与恢复(进程暂停)
- JAVA中的interface和ios中的对比
- UVaOJ167 - The Sultan's Successors
- UVaOJ140 - Bandwidth
- android 4.0 WIFI 初始化过程(应用层+框架层)
- 《Javascript权威指南》学习笔记之~Chapter 3. Type, Values, and Variables
- [MFC]线程的挂起与恢复
- 20部商战电影,电影中的商学院
- UVaOJ10603 - Fill
- HTML中嵌入MP3播放器
- BSS段、数据段、代码段、堆与栈
- [Python系列实用教程]一、Python如何使用urllib2获取网络资源
- UVaOJ10422 - Knights in FEN
- 【iOS开发】协议与委托 (Protocol and Delegate)
- UVaOJ10085 - The most distant state