如等待的时间为3秒,若超过这段时间线程还没有结束,WaitForSingleObject 返回WAIT_TIMEOUT,这时不想线程再继续运行下去,请问这应该怎么关闭
解决方案 »
- 请教各位高手quickreport报表的问题
- 报表问题~~只有这么多分了~~~~-_-~
- 选下N个图片如何让其跟据长宽自动排列
- 如何在程序中发送短信
- 当我们的软件交付用户使用时
- 很诚恳的想问一个问题,可能对我的影响比较大。希望可以听听你们的意见!!!!
- GetDate()的问题,大家帮帮忙
- 如何在Form上实现两幅图片半透明叠加的效果?而且在程序运行时一幅不动,另一幅要运动。结果合成的图像会不断变化。急。分不够再加。来者
- 求助关于获取 肉页内镶 Flash 句柄的问题
- 在Delphi中有没有像VC++中的“Alt+F8”对语句进行整理的键???
- 关于label换行的一个问题
- 哪位帮我写个小程序,谢谢
//跳出线程执行,这有很多方法,如果你用的是delphi的TThread,你可以使用termited := true;
//如果是自己的win32api创建的线程,那你自己根据需要跳出循环就行了,然后exitthread(0)调用
如你这里是要等待hSignObj这个线程结束,若超时的话,我想调用WaitForSingleObject的线程继续运行,而hSignObj(这个线程是会调用一些阻塞函数的,httpsendrequest之类的)这个线程不继续运行,我试了exitthread(0)这个好像是把调用WaitForSingleObject的线程停止了
可以尝试在主线程中用Terminate,
在Execute中
if Terminated then Break;
if WAIT_TIMEOUT = WaitForSingleObject(f_MonitorThread.Handle, 3000) then
begin
TerminateThread(f_MonitorThread.Handle, 0);
end;
TerminateThread,这个API 会强行终止线程,但是不会释放线程资源。容易造成内存泄露,用TTread自带的Terminate,然后 在线程中的Execute中加入
while not terminated do
begin
//.....
end;