主线程如何控制附属线程停止吓来(50分)

  • 主题发起人 主题发起人 eyas
  • 开始时间 开始时间
E

eyas

Unregistered / Unconfirmed
GUEST, unregistred user!
比如说又多个附属线程去做很长的循环工作,当他们循环到一半的时候,我想让
他们全部停下来,或者部分停下来,我应该怎么做?
可不可以给出简单的例子?谢谢
不好意思,我只有50分了
 
循环中加入Application.MessageProcess;
 
Jams,具体怎么实现?能不能给我个简单的例子?谢谢
 
应为:Application.ProcessMessages;
 
Application.ProcessMessages;是设置他响应消息,对吗?
但我发送什么消息让他停止下来呢?
 
Application.ProcessMessages只是在你的程序有较长时间的运行,可以将控制权交到CPU手
上,要它可以响应别的事件,应该不关线程的暂停、中止的事吧。好像是用thread的suspend
方法或是你可以用suspendthread这个API函数做到的!中止就可以用TerminateThread这个API
函数,也很方便的!
 
For i=1 to xxxxdo
begin
your progress;
....
Application.ProcessMessages;
//发送一消息给系统
end;

procedure 处理消息过程;
{ 结束线程
}
 
我想知道的是
比如说
我点一下'开始按钮',然后就开始一个线程进行长时间的运算。
当他还没运行完的时候,我想让他停下来。我应该怎么做呢?
 
1。你应在循环中加入Application.ProcessMessages使得它在循环时可以处理其他事件
2。在其他事件里,(比如说:button2onclick)加入:
threadname.terminate//中断
threadname.suspend //挂起
threadname.resume //从挂起处继续
当然如果你仅是有一些循环的话,还有一种不太好的方法(无法继续,但能强制跳出)
for i=1 to xxxxxdo
begin
do
self things;
Application.ProcessMessages;
if terminate then
break;
end;

在button2onclick中加入
terminate:=true;
 
多人接受答案了。
 
后退
顶部