如何结束线程 为什么主对话框关闭了线程却没有结束

ThreeKingdom 2003-09-25 09:41:54
如何结束线程 为什么主对话框关闭了线程却没有结束
先点击button3, 再马上点button1

CWinThread * m_pThread;
//使用时
void CDlg2Dlg::OnButton1()
{
AfxMessageBox("你点击了button1");
DWORD ExitCode;
GetExitCodeThread(m_pThread->m_hThread,&ExitCode);
// m_pThread->ExitInstance();
// m_pThread->PostThreadMessage()
CloseHandle(m_pThread->m_hThread);
ExitThread(ExitCode);
};

UINT MyThreadProc(LPVOID pParam)
{
CDlg2Dlg * pDlg = (CDlg2Dlg *) pParam;
// pDlg->OnButton2();
Sleep(5000);
AfxMessageBox("多线程完成");
return 1;
}
void CDlg2Dlg::OnButton3()
{
m_pThread = AfxBeginThread(MyThreadProc,(LPVOID)this);
}
...全文
62 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
duyhui 2003-09-25
  • 打赏
  • 举报
回复
线程返回的时候是自动关闭的,这个问题主要在于你点button1的时候,线程还没结束Sleep(5000);
如果,已经结束的话,该线程就自动关了!
一般不调用ExitThread(),因为就算用ExitThread()关掉该线程,但它占用的资源还没有被释放掉
pengweibo 2003-09-25
  • 打赏
  • 举报
回复
up
feeboby 2003-09-25
  • 打赏
  • 举报
回复
窗口关闭与程序的退出是两回事。
窗口关了之后,程序才可以退出,但是,也有可能程序还在运行,所以在任务管理器,
有时能看到一些窗口关了,但还在运行的程序。
FlyYang 2003-09-25
  • 打赏
  • 举报
回复
退出线程最好在线程中调用ExitThread()
而你在Button1中调用的ExitThread()不是结束你在Button3中创建线程
如果要在线程外终止用TerminateThread()


---------
++C++
---------
易语言模块 e秒百科模块 ------------------------------ .版本 2 .子程序 BASE64编码, 文本型, 公开 .参数 待编码数据, 字节集 .子程序 BASE64解码, 字节集, 公开 .参数 待解码数据, 文本型 .子程序 PostXml访问网页, 字节集, 公开, POST提交网站信息 .可提交COOKIE信息 .参数 Url, 文本型, , 提交的网站Url.action后面的地址.需要补全 .参数 Referer地址, 文本型, , Referer地址 .参数 Cookie信息, 文本型, , Cookie信息 .参数 提交数据, 文本型, , 提交到网站的数据 .子程序 PostXml访问网页Other, 文本型, 公开, POST提交网站信息 .可提交COOKIE信息 .参数 Url, 文本型, , 提交的网站Url.action后面的地址.需要补全 .参数 Referer地址, 文本型, , Referer地址 .参数 提交数据, 文本型, , 提交到网站的数据 .子程序 URL编码, 文本型, 公开 .参数 URL, 文本型 .子程序 URL解码, 文本型, 公开 .参数 URL, 文本型 .子程序 XmlHttp取网页源码, 文本型, 公开, o嘎oO抽了 qq:5565007 .参数 通信方式, 文本型, , 比如GET或是POST .参数 URL地址, 文本型, , 网址 .参数 同步异步, 逻辑型, , 步通信方式(真) 同步方式(假) .参数 用户ID, 文本型, 可空, 用于服务器身份验证 .参数 用户密码, 文本型, 可空, 用于服务器身份验证 .子程序 保存超级列表框至TXT默认型, , 公开, 默认文件型 如:"test.txt" .参数 超级列表框, 超级列表框 .参数 文件名, 文本型, , 例如:"c:\fly.txt" .参数 决定取多少项, 整数型, , 决定取多少项,取全部用导出文章列表框.取列数 () .参数 列分隔符号, 文本型, , 用来把一行里的每列内容用符号分开如(,) .参数 行分隔符号, 文本型, , 用来把一行用符号分开如(#换行符) .子程序 保存超级列表框至TXT通用对话框型, , 公开 .参数 通用对话框, 通用对话框, , 打开要保存的路径对话框 .参数 超级列表框, 超级列表框, , 要保存内容的超级列表框 .参数 决定取多少项, 整数型, , 决定取多少项,取全部用导出文章列表框.取列数 () .参数 列分隔符号, 文本型, , 用来把一行里的每列内容用符号分开如(,) .参数 行分隔符号, 文本型, , 用来把一行用符号分开如(#换行符) .子程序 保存超级列表框至文本型, 文本型, 公开 .参数 超级列表框, 超级列表框 .参数 决定取多少项, 整数型, , 决定取多少项,取全部用导出文章列表框.取列数 () .参数 列分隔符号, 文本型, , 用来把一行里的每列内容用符号分开如(,) .参数 行分隔符号, 文本型, , 用来把一行用符号分开如(#换行符) .子程序 读入TXT至超级列表框默认型, , 公开, 默认文件型 如:"test.txt" .参数 超级列表框, 超级列表框, , 要保存内容的超级列表框 .参数 文件名, 文本型 .参数 列分隔符号, 文本型, , 用来把一行里的每列内容用符号分开如(,) .参数 行分隔符号, 文本型, , 用来把一行用符号分开如(#换行符) .子程序 读入TXT至超级列表框通用对话框型, , 公开 .参数 通用对话框, 通用对话框, , 打开要保存的路径对话框 .参数 超级列表框, 超级列表框, , 要保存内容的超级列表框 .参数 列分隔符号, 文本型, , 用来把一行里的每列内容用符号分开如(,) .参数 行分隔符号, 文本型, , 用来把一行用符号分开如(#换行符) .子程序 读入文本至超级列表框默认型, , 公开 .参数 超级列表框, 超级列表框, , 要保存内容的超级列表框 .参数 文本内容, 文本型, , 接收的文件内容 .参数 列分隔符号, 文本型, , 用来把一行里的每列内容用符号分开如(,) .参数 行分隔符号, 文本型, , 用来把一行用符号分开如(#换行符) .子程序 取域名, 文本型, 公开 .参数 网址, 文本型 .参数 不过滤端口, 逻辑型, 可空 .子程序 网页片断取数据, 文本型, 公开, 整段代码截取 .参数 临时代码容器, 文本型, , 页面源码 .参数 截取开始代码, 文本型, , 开始代码 .参数 截取结束代码, 文本型, , 结束代码 .子程序 网页循环取规则至超级列表框, , 公开 .参数 单页全源码, 文本型, , 全页的源码 .参数 规则超级列表控件, 超级列表框, , 规则的超级列表框 .参数 内容超级列表控件, 超级列表框, , 准备入库的超级列表框 .子程序 网页循环取数据, 数组自定义型, 公开, 链接或内容等循环截取.在片断截取之后用 .参数 最后取得列表, 文本型, , 网页片断取数据后取得的源码 .参数 截取开始代码, 文本型, , 开始代码 .参数 截取结束代码, 文本型, , 结束代码 .子程序 网页循环取数据取列型, 数组自定义型, 公开, 链接或内容等循环截取.在片断截取之后用 .参数 最后取得列表, 文本型, , 网页片断取数据后取得的源码 .参数 截取开始代码, 文本型, , 开始代码 .参数 截取结束代码, 文本型, , 结束代码 .参数 表列数, 整数型, , 取循环列数 意思是有多少项规则 如:内容规则列表框.取表项数()-1 .子程序 网页循环取数据组合框, , 公开, o嘎oO抽了 qq:5565007 .参数 最后取得列表, 文本型, , 网页片断取数据后取得的源码 .参数 截取开始代码, 文本型, , 开始代码 .参数 截取结束代码, 文本型, , 结束代码 .参数 组合框, 组合框, 可空, 组合框控件 .子程序 网页验证数据内容, , 公开, o嘎oO抽了 .参数 临时代码容器, 文本型, , 页面源码 .参数 验证内容, 文本型, , 验证代码内容。一般编辑框内容 .子程序 网页正则取链接, 数组自定义型, 公开, 返回正则取到的链接地址数组 .参数 全页源码, 文本型 .参数 域名, 文本型, 可空, 例:www.zzksf.com 无http:// .用模块里的取域名方法可得 .参数 包含, 文本型, 可空, 连接中必须包含的字符串 .参数 不包含, 文本型, 可空, 连接中不得包含的字符串 .子程序 迅雷解码, 文本型, 公开 .参数 地址, 文本型 .数据类型 多线程许可证, 公开 .成员 DebugInfo, 整数型 .成员 LockCount, 整数型 .成员 RecursionCount, 整数型 .成员 OwningThread, 整数型 .成员 LockSemaphore, 整数型 .成员 SpinCount, 整数型 .数据类型 数组自定义型, 公开, 模块返回数组类型 .成员 内容, 文本型, , "1", 参数"文本数组型",可自定类型! .程序集 多线程控制类, , 公开 .子程序 创建进入许可证, 多线程许可证, 公开 .子程序 等待线程, 逻辑型, 公开 .参数 线程句柄, 整数型 .参数 等待时间, 整数型, 可空, 单位为毫秒,0和-1表示无限等待 .子程序 挂起线程, 逻辑型, 公开 .参数 线程句柄, 整数型 .子程序 关闭线程句柄, 逻辑型, 公开 .参数 线程句柄, 整数型 .子程序 继续执行, 逻辑型, 公开, 继续运行被挂起的线程 .参数 线程句柄, 整数型 .子程序 进入许可区, , 公开 .参数 进入许可证, 多线程许可证 .子程序 启动线程, 逻辑型, 公开 .参数 欲执行的子程序, 子程序指针 .参数 参数数据, 整数型, 可空 .参数 线程句柄, 整数型, 参考 可空 .子程序 强制结束线程, 逻辑型, 公开 .参数 线程句柄, 整数型 .子程序 取当前线程句柄, 整数型, 公开 .子程序 取线程返回值, 整数型, 公开, 使用前请保证线程已经运行完毕,如线程尚未中断将返回STILL_ACTIVE(值为259)。子程序返回值为其他数据类型将返回指针。 .参数 线程句柄, 整数型 .子程序 取线程状态, 整数型, 公开, 返回0表示该线程不存在(或句柄已被关闭),返回1为运行完毕,2为正在运行。 .参数 线程句柄, 整数型 .子程序 删除进入许可证, , 公开 .参数 进入许可证, 多线程许可证 .子程序 退出许可区, , 公开 .参数 进入许可证, 多线程许可证

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧