用AfxBeginThread开启一个线程,怎么样去关闭这个线程?
2012-10-08 20:37
465 查看
一般不要主动去关闭,让线程自己返回即可,但是你一定要关闭,有几种方法可以根据自己的实际情况选择一种方式。
(1)在线程函数内部调用AfxEndThread关闭;
(2)或定义一个全局bool变量bIsRunning设为true,外部要关闭时,将这个变量设为false。
线程函数内部循环来检测这个变量,当为false时就返回。如:
while(bIsRunning)
{
return 0;
}
(3)你还可以使用事件。在类内部声明一个事件变量,并定义如下方法:
C/C++ code
在外部需要终止那个线程时,调用
ForceQuit();
WaitForSingleObject(*m_pAssistantThread, INFINITE);
线程函数内部循环来检测事件信号来结束自己。假设lpObject是传入的对象
C/C++ code
(1)在线程函数内部调用AfxEndThread关闭;
(2)或定义一个全局bool变量bIsRunning设为true,外部要关闭时,将这个变量设为false。
线程函数内部循环来检测这个变量,当为false时就返回。如:
while(bIsRunning)
{
return 0;
}
(3)你还可以使用事件。在类内部声明一个事件变量,并定义如下方法:
C/C++ code
CEvent evtExit; BOOL ForceQuit() { return evtExit.SetEvent(); } BOOL IsForceQuit() { return WaitForSingleObject(evtExit.m_hObject, 0) == WAIT_OBJECT_0; }
在外部需要终止那个线程时,调用
ForceQuit();
WaitForSingleObject(*m_pAssistantThread, INFINITE);
线程函数内部循环来检测事件信号来结束自己。假设lpObject是传入的对象
C/C++ code
while(!lpObject->m_ThreadFuncParam.IsForceQuit()) { //不结束这做自己的事! }
相关文章推荐
- AfxBeginThread开启一个线程,怎样去关闭这个线程?
- MFC下暂停、继续、结束AfxBeginThread开启的线程
- 创建一个线程用哪个好?--CreateThread._beginthread.AfxBeginThread比较
- 使用 AfxBeginThread 传递一个结构体入线程需要注意的地方
- 使用 AfxBeginThread 传递一个结构体入线程需要注意的地方
- AfxBeginThread开始一个线程出现内存泄漏
- MFC下结束AfxBeginThread开启的线程的一些体会
- MFC下暂停、继续、结束AfxBeginThread开启的线程
- MFC下结束AfxBeginThread开启的线程的一些体会
- AfxBeginThread开启线程防止内存泄漏
- AfxBeginThread创建用户界面线程
- MFC用户线程AfxBeginThread()
- MFC之AfxbeginThread 线程 创建、挂起、释放、结束、退出
- AfxBeginThread的一个例子
- MFC中 如何在类对象内部创建线程(AfxBeginThread())
- AfxBeginThread创建线程并指定优先级
- mfc下AfxBeginThread创建线程
- AfxBeginThread和AfxEndThread及线程资源分配和释放
- mfc 创建线程函数AfxBeginThread,线程中访问mfc控件
- Thread和Runnable的区别和联系、多次start一个线程会怎么样