社区
进程/线程/DLL
帖子详情
::SuspendThread( hThread1);这个函数怎么有时候可以暂停线程,有时候不可以暂停
p5655364p
2010-08-26 05:36:16
::SuspendThread( hThread1);这个函数怎么有时候可以暂停线程,有时候不可以暂停,我是在程序中创建10个线程,然后对应的去暂停,但是好像不可以暂停了,我在创建线程传递给线程函数一个结构体数组,会不会是这个原因啊,还是什么原因,谢谢回答的人
...全文
351
12
打赏
收藏
::SuspendThread( hThread1);这个函数怎么有时候可以暂停线程,有时候不可以暂停
::SuspendThread( hThread1);这个函数怎么有时候可以暂停线程,有时候不可以暂停,我是在程序中创建10个线程,然后对应的去暂停,但是好像不可以暂停了,我在创建线程传递给线程函数一个结构体数组,会不会是这个原因啊,还是什么原因,谢谢回答的人
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fly4free
2010-08-31
打赏
举报
回复
换个思路把,你为什么要suspendthread?
它就是使某线程不再参加“被调度”了
即使你真的调用成功了,你知道它停在哪里了吗?
「已注销」
2010-08-31
打赏
举报
回复
一般难以暂停,只有那个线程执行Sleep函数才可以
Eleven
2010-08-28
打赏
举报
回复
[Quote=引用 6 楼 p5655364p 的回复:]
引用 3 楼 fangongdalu7148 的回复:
看看SuspendThread 调用成功没,,GetLastError 看看什么错误
没有调用成功,GetLastError 返回的值是6,说明这个线程句柄无效,怎么回事啊,我以前也是这样创建的,可以暂停的,但是现在不知道怎么回事?
[/Quote]
你的线程不会已经终止结束了吧。。。
begges
2010-08-28
打赏
举报
回复
会不会是线程已经停止运行了啊,调用之前用GetExitCodeThread看下是否运行着呢!
p5655364p
2010-08-28
打赏
举报
回复
你加我的qq啊,因为代码太多了,我发给你代码,你看看是什么地方出问题了
hilevel
2010-08-28
打赏
举报
回复
既然是线程句柄无效,那错误应该在别处
还是贴代码吧
p5655364p
2010-08-28
打赏
举报
回复
[Quote=引用 3 楼 fangongdalu7148 的回复:]
看看SuspendThread 调用成功没,,GetLastError 看看什么错误
[/Quote]
没有调用成功,GetLastError 返回的值是6,说明这个线程句柄无效,怎么回事啊,我以前也是这样创建的,可以暂停的,但是现在不知道怎么回事?
QQ282881515
2010-08-26
打赏
举报
回复
牵扯到内核的东西。。得看看你的线程被唤醒了几次了。若是被唤醒了两次就得调用SuspendThread两次才能挂起。内核对象里边有个计数器在计数 。 有代码就好了
zgsdzhaolanxiang1
2010-08-26
打赏
举报
回复
If the thread is making a kernel call, SuspendThread fails. An application might need to repeat the SuspendThread several times for it to succeed.
如果 这个线程正在调用一个内核函数,SuspendThread 失败.程序需要多调用几次SuspendThread 才能成功
zgsdzhaolanxiang1
2010-08-26
打赏
举报
回复
看看SuspendThread 调用成功没,,GetLastError 看看什么错误
p5655364p
2010-08-26
打赏
举报
回复
你加我的qq,我把代码发给你,qq是1192866550
wltg2001
2010-08-26
打赏
举报
回复
没有代码说不清楚
MFC和Win32创建、
暂停
、删除
线程
例子
MFC和Win32创建、
暂停
、删除
线程
例子,VS2017项目,该项目实现用MFC和Win32Api创建
线程
对ui操作。
向指定
线程
插入异常,以便控制
线程
行为
线程
启动以后就再也不受创建
线程
的控制了。本文提出了一种控制
线程
的方法。 例如:T
Thread
创建
线程
,也希望该类能够销毁
线程
。则可以在
线程
函数
的入口增加try{}catch(T
Thread
CloseException&), 在需要销毁
线程
时向指定
线程
插入一个T
Thread
CloseException异常即可
c++多
线程
的创建挂起执行与销毁
1. 创建一个基于对话框的应用程序。并增加如图所示控件;分别为3个进度条控件关联三个进度条类型的变量;并在对话框的初始化
函数
中,设定进度条的范围;为编辑框关联一个整型的变量;为12个按钮添加消息处理
函数
; 2. 定义结构体:用做
线程
函数
的参数传递 typedef struct
Thread
info{ CProgressCtrl *progress;//进度条对象 int speed; //进度条速度 int pos; //进度条位置 }
thread
,*lp
thread
; 3. 为对话框增加三个句柄,用于标识各个
线程
; HANDLE h
Thread
1; //
线程
1
线程
句柄 HANDLE h
Thread
2; //
线程
2
线程
句柄 HANDLE h
Thread
3; //
线程
3
线程
句柄 在增加三个结构体类型的变量,用做
线程
函数
的参数传递; HANDLE h
Thread
1; //
线程
1
线程
句柄 HANDLE h
Thread
2; //
线程
2
线程
句柄 HANDLE h
Thread
3; //
线程
3
线程
句柄 4. 新增一个静态的全局变量,用于记录所有
线程
的状态:static int GlobalVar=10000; 5. 声明并编写
线程
函数
,注意只能有一个参数,且
函数
的返回值类型也是固定的;
函数
名可以自定义; DWORD WINAPI
Thread
Fun(LPVOID p
thread
);//
线程
入口
函数
6. 在启动按钮的消息处理
函数
中编写如下代码:
thread
1.progress=&m_progress1;//进度条对象
thread
1.speed=100;//速度
thread
1.pos=0;//初始位置 h
Thread
1=Create
Thread
(NULL,0,
Thread
Fun,&
thread
1;,0,0);//创建并开始
线程
if (!h
Thread
1) { MessageBox("创建
线程
失败"); } 7. 编写
线程
函数
(一般是一个死循环,或者需要花费时间很长的算法!否者就失去了多
线程
的意义) DWORD WINAPI
Thread
Fun(LPVOID p
thread
) //
线程
入口
函数
{ lp
thread
temp=(lp
thread
)p
thread
;//参数强制转换为结构体类型 temp->progress->SetPos(temp->pos); //设置被传递过来的进度条的位置 while(temp->posspeed); /设置速度 temp->pos++; //增加进度 temp->progress->SetPos(temp->pos); //设置进度条的新位置 GlobalVar--; if(temp->pos==20) { temp->pos=0; //进度条满则归0 } } return true; } 8. 在挂起按钮
函数
中,编写如下代码: if(
Suspend
Thread
(h
Thread
1)==0xFFFFFFFF) { MessageBox("挂起失败!进程可能已经死亡或未创建!"); return; } 9. 在执行按钮
函数
中,编写如下代码: if(Resume
Thread
(h
Thread
1)==0xFFFFFFFF) { MessageBox("执行失败!进程可能已经死亡或未创建!"); return; } 10. 在停止按钮
函数
中,编写如下代码: if(Terminate
Thread
(h
Thread
1,0))//前些终止
线程
{ CloseHandle(h
Thread
1);//销毁
线程
句柄 } else { MessageBox("终止进程失败!"); } 11. 为应用程序添加WM_TIMER消息,实时更新全局变量的值到编辑框;
多
线程
学习心得体会
多
线程
编程学习的心得体会,仅供参考,如有偏差出,还请不吝赐教。
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章