社区
网络通信/分布式开发
帖子详情
WaitForSingleObject等待一个线程一段时间
mozm
2012-06-25 11:03:44
如等待的时间为3秒,若超过这段时间线程还没有结束,WaitForSingleObject 返回WAIT_TIMEOUT,这时不想线程再继续运行下去,请问这应该怎么关闭
...全文
525
9
打赏
收藏
WaitForSingleObject等待一个线程一段时间
如等待的时间为3秒,若超过这段时间线程还没有结束,WaitForSingleObject 返回WAIT_TIMEOUT,这时不想线程再继续运行下去,请问这应该怎么关闭
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
孤独de猫
2012-11-06
打赏
举报
回复
顶下6楼 TerminateThread,这个API 会强行终止线程,但是不会释放线程资源。容易造成内存泄露,用TTread自带的Terminate,然后 在线程中的Execute中加入
while not terminated do begin //..... end;
lyl357159
2012-11-06
打赏
举报
回复
//最多等待3秒让工作者线程自行终止。 if WAIT_TIMEOUT = WaitForSingleObject(f_MonitorThread.Handle, 3000) then begin TerminateThread(f_MonitorThread.Handle, 0); end;
xiaocongzhi
2012-07-10
打赏
举报
回复
TerminateThread这个可用,不过要慎用
aTian2009
2012-07-06
打赏
举报
回复
lz只想用这个WaitForSingleObject 吗?
可以尝试在主线程中用Terminate,
在Execute中
if Terminated then Break;
「已注销」
2012-06-25
打赏
举报
回复
结束其他线程可以使用TerminateThread函数,但是这个做法是非常不建议使用的的。因为你不知道其他的线程正在做什么。强行结束掉他是很粗鲁的行为,意味着你的代码设计得有问题。
mozm
2012-06-25
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
if WaitForSingleObject(hSignObj,3*1000) = WAIT_TIMEOUT then
//跳出线程执行,这有很多方法,如果你用的是delphi的TThread,你可以使用termited := true;
//如果是自己的win32api创建的线程,那你自己根据需要跳出循环就行了,然后exitthread(0)调用
[/Quote]
如你这里是要等待hSignObj这个线程结束,若超时的话,我想调用WaitForSingleObject的线程继续运行,而hSignObj(这个线程是会调用一些阻塞函数的,httpsendrequest之类的)这个线程不继续运行,我试了exitthread(0)这个好像是把调用WaitForSingleObject的线程停止了
「已注销」
2012-06-25
打赏
举报
回复
if WaitForSingleObject(hSignObj,3*1000) = WAIT_TIMEOUT then
//跳出线程执行,这有很多方法,如果你用的是delphi的TThread,你可以使用termited := true;
//如果是自己的win32api创建的线程,那你自己根据需要跳出循环就行了,然后exitthread(0)调用
robotdeng
2012-06-25
打赏
举报
回复
线程无法强制结束...
请修改线程代码, 减小循环体. 我的BLOG有写这个部分.
mozm
2012-06-25
打赏
举报
回复
httpsendrequest这个函数一阻塞就要等很长时间的,也想不到什么方法来处理
对话框中
Wait
For
Single
Object
等待
线程
退出导致程序阻塞的原因及解决
在对话框中新建
一个
线程
worker thread,当用户点击cancel时,通知该
线程
函数退出,同时用
Wait
For
Single
Object
等待
该
线程
结束。但是每当用户点击Cancel后,程序会卡在OnCancel函数中的
Wait
For
Single
Object
处,必须...
Wait
For
Single
Object
在多
线程
的情况下,有时候我们会希望
等待
某一
线程
完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数...首先我们可以假设这里存在
一个
文件和两个
线程
,我们规定这个文件同一时刻只能被
一个
线程
所...
线程
等待
一定时间和及时返回继续执行,以及
等待
线程
退出。
创建
线程
后让
线程
定时执行,可以通过sleep(time). 但我们一般可以通过在使用...如果不让
线程
做
等待
过程的返回操作,便可直接使用
线程
句柄
等待
即可。 DWORD WINAPICGisOper::VehStatusThread(LPVOID pParam) {
多
线程
同步的资料--
Wait
For
Single
Object
在多
线程
的情况下,有时候我们会希望
等待
某一
线程
完成了再继续做其他事情(比如主
线程
等待
子
线程
结束完之后,自己再结束),要实现这个目的,可以使用Windows API函数
Wait
For
Single
Object
,或者
Wait
ForMultiple
Object
s...
对话框中
Wait
For
Single
Object
等待
线程
退出导致程序阻塞的原因及解决 [转]
今天在调试程序中发现了程序中出现的
一个
... 在对话框中新建
一个
线程
worker thread,当用户点击cancel时,通知该
线程
函数退出,同时用
Wait
For
Single
Object
等待
该
线程
结束。但是每当用户点击Cancel后,程序会卡在O...
网络通信/分布式开发
1,593
社区成员
32,964
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章