VC如何对新创建的一个线程暂停或重启
2015-03-14 20:36
253 查看
执行AfxBeginThread()函数时,如果成功则返回一个指向新线程对象的CWinThread指针,否则为NULL。就是说它会new一个CWinThread对象,而这个对象在线程运行结束时是会自动删除的。
这样只要得到这一新线程的指针,我们就可以对新线程进行操作了。
向对话框类里面添加一个CWinThread* mythread 的成员变量,不用初始化为NULL,这样会报错的,因为它只能通过AfxBeginThread函数获得。
然后添加一个 pause 按钮向其响应函数里面添加代码 mythread->SuspendThread(); 再添加一个 resume按钮,向其响应函数里面添加 mythread->ResumeThread();
要结束一个线程可以在线程内调用AfxEndThread将会直接结束线程,此时线程的一切资源都会被回收。注意在线程中使用了CString类,则不能用AfxEndThread来进行结束线程,会有内存泄漏,只有当程序结束时,会在输出窗口有提示多少byte泄漏了。因为Cstring的回收有其自己的机制。建议在AfxEndThread之前先进行return。
这样只要得到这一新线程的指针,我们就可以对新线程进行操作了。
向对话框类里面添加一个CWinThread* mythread 的成员变量,不用初始化为NULL,这样会报错的,因为它只能通过AfxBeginThread函数获得。
然后添加一个 pause 按钮向其响应函数里面添加代码 mythread->SuspendThread(); 再添加一个 resume按钮,向其响应函数里面添加 mythread->ResumeThread();
要结束一个线程可以在线程内调用AfxEndThread将会直接结束线程,此时线程的一切资源都会被回收。注意在线程中使用了CString类,则不能用AfxEndThread来进行结束线程,会有内存泄漏,只有当程序结束时,会在输出窗口有提示多少byte泄漏了。因为Cstring的回收有其自己的机制。建议在AfxEndThread之前先进行return。
相关文章推荐
- VC如何对新创建的一个线程暂停或重启
- 如何在VC中利用系统函数创建一个新的线程
- VC++ 如何创建一个线程并传递参数
- VC如何创建一个新的线程
- C# 如何实现一个线程暂停和继续
- 在VC中如何创建多个线程
- 如何利用Microsoft Web Browser控件在VC中创建一个属于自己的浏览器
- 如何创建一个VS2005 VC++下的D3D项目环境
- VC中如何得到一个线程的效率
- VC++ 创建线程的三种方式以及如何进行选择
- [转]VC++创建一个线程并传递参数
- 如何使用VC创建一个ActiveX控件,并使其可以被VB使用
- Java核心知识点学习----线程中如何创建锁和使用锁 Lock,设计一个缓存系统
- vc创建一个线程的方法:
- vc创建一个线程和销毁的方法
- vc创建一个线程的方法
- 创建一个pthread线程时如何传递参数
- vc 线程的创建,暂停和结束
- 如何创建一个简单的线程
- 略谈如何创建一个监控线程