怎么外部中止线程?(100分)

  • 主题发起人 主题发起人 tanber
  • 开始时间 开始时间
T

tanber

Unregistered / Unconfirmed
GUEST, unregistred user!
我在窗口建立的时候,执行如下语句:
with TDownloadThread.Create(IdFTP1,CurrentHostDirect,CurrentLocalDirect)do
OnTerminate := CloseForm;
其中CloseForm代码如下:
procedure TFormLoad.CloseForm(Sender: TObject);
begin
Close();
end;
如果线程正常运行完,这样调用是不会出错的.
但现在我在Form里放了一个按钮,我点击按钮要中止线程,该怎么操作?
 
1.可以
2.如果线程中有循环,那么在循环中检查
if Terminated then
break;
//跳出循环,让线程结束
按钮中的事件可以这样:
TDownloadThread.Terminate;
如果线程中不是循环,而是一些阻塞的耗时操作,那就没办法,只有等。
 
参见这个例子:
http://www.2ccc.com/article.asp?articleid=3740
 
TDownloadThread是通过
TDownloadThread = class(TThread)实现的
我在TFormLoad uses了DownloadThd(里面实现了TDownloadThread 的定义)
但并不能调用TDownloadThread.Terminate
 
参见这个例子,里面有完整的线程暂停,回复,终止的代码:
http://www.2ccc.com/article.asp?articleid=3740
 
线程中加个全局变量开关
 
接受答案了.
 
后退
顶部