如何立刻终止一个线程(20分)

  • 主题发起人 主题发起人 yyok
  • 开始时间 开始时间
Y

yyok

Unregistered / Unconfirmed
GUEST, unregistred user!
在线程的 Execute 方法中这样写:
while not Terminateddo
begin
...
self.Terminate;
...
end;

但是用self.Terminate;不会立刻终止,我想在那个位置立刻终止线程
应该怎么做,并且要安全的终止.
 
TThread.Terminate
 
来自:xianjun 时间:2001-12-11 15:42:00 ID:780055
你Execute过程中处理就行了
Execute完了之后自然就退出了,如果你要中退出也可以,设一个标记位
如果线程的“标准”写法:
while not Terminateddo
begin
//
end;


来自:netup 时间:2001-12-11 17:18:00 ID:780382
不知你的线程是如何写的, 如果线程中有的EXECUTE中有循环, 你就要在循环中加上
if terminated then
break
如果要立即结束THRED的话, 你应有一个THREAD的对象如TESTTHREAD,通过
EXITTHREAD(TESTTHREAD.HANDLE, 4);
如果不行的话就用TERMINATERTHREAD(TESTHREAD.HANDLE, 4);

来自:风中流云 时间:2001-12-11 19:00:00 ID:780638
如果使用begin
thread()
你可以在线程中加个变量,执行的时候通过控制这个变量来控制线程的执行
如:if true then
endthread(thid);
如果是自定义的话就在循环体中加个判断就可以了。。
 
在线程的 Execute 方法中这样写:
while not Terminateddo
begin
...
self.Terminated := True;
Exit;
...
end;
 
你可以通过调用TerminateThread()来结束
 
线程未结束,想要强行退出撤销可自己编写过程:
Procedure TThreadName.KillThread;
begin
TerminateThread(QT_Handle,ExitCode);
end;
QT_Handle,ExitCode:自定义变量,QT_Handle:=ThreadName.Handle;
 
后退
顶部