写了一个继承自CWinThread的线程,里边是一个while(1)循环,除非整个程序退出,否则一直循环。
请问程序退出是,如何终止该线程?
需要用消息吗?
给个例子看看,先谢了!
请问程序退出是,如何终止该线程?
需要用消息吗?
给个例子看看,先谢了!
解决方案 »
- 我想在一个窗口应用程序中实现后台线程的处理
- 一定要把源代码给公司吗?不给行不行啊,只给组件或dll可以吗?大家的公司都是怎样要求你们的呢.
- Data Time Picker控件的刷新问题
- 请教:用VC做的程序,如何实现向http上传文件呢? 能创建一个文件,但是写不进内容?
- 要安装souresafe服务器版的(想跟别的机子一起工作),安装时老提示插入第二张盘,那里可以下载啊?
- VC+ADO读写ORACLE8I的BLOB类型数据问题,救急~!!
- 请问如何知道一个BMP图是黑白的.
- MDI和SDI的根本区别是什么??
- 再问:为何在线程中调用CSocket的Create会出错?
- 深入浅出mfc?
- 急啊 !
- 关于CString的问题 怎么取出字符串里每一个字节呢?
如果想主动退出,就加个标识,想退出时设置标识,就退出。如:BOOL bExit=TRUE;
while(bExit)
{
....}//要退出时调用下面的函数
void otherfun()
{
bExit = FALSE;
}
{
while(1)
{
// 你这里是不是有一个等待的语句?sleep 或者WaitForSingleObject之类的函数?
// 你在这个函数后判断一下是不是成图退出了,这个退出你用一个全局的标识就行了,如果是退出的话就跳出循环,先线程退出
}
}
线程类的退出发消息::PostThreadMessage(线程指针->m_nThreadID,WM_QUIT,0,0);
好像这样有可能抛出异常。
//如果想主动退出,就加个标识,想退出时设置标识,就退出。
这样也可以,不过while循环里边一次循环时间比较长的话,要等待很长时间才能退出。
谢谢回复!
不知道还有什么其他的方法吗?
线程处理WM_QUIT消息时把资源都释放掉就ok
hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);然后在线程中
while(true)
{
...
if((WaitForSingleObject(hEvnet, 0)) == WAIT_OBJECT_0)
{
return;
}
...
}要循环退出就 SetEvent(hEvent);