procedure TThread1.Execute;
begin
OnTerminate := MainForm.ThreadsDone ;
end;procedure TMainForm.ThreadsDone(Sender: TObject);
begin
Timer1.Enabled := True;
end;
然后我在程序中起用这个线程
TThread1.Create(False);
//DoSomething;
????//任务完成,终止线程,但是怎么样终止这个线程啊?
begin
OnTerminate := MainForm.ThreadsDone ;
end;procedure TMainForm.ThreadsDone(Sender: TObject);
begin
Timer1.Enabled := True;
end;
然后我在程序中起用这个线程
TThread1.Create(False);
//DoSomething;
????//任务完成,终止线程,但是怎么样终止这个线程啊?
解决方案 »
- phpwind 论坛发贴POST提交!cookie 设置
- 请问一个从四五条生产线上的传感器上得到数据,然后在显示到监控屏幕的程序报价多少钱.
- 怎样实现IXMLDOMNode与某个类的关联
- 这样行吗?一个C/S程序只用一个QUERY和一个DataSource和一个ADOConnect可以吗?
- videocap有支持Delphi7的版本吗?
- 菜鸟提问:MessageBox的英文按钮显示!在线等待!!!多谢!!!
- 专业问题……!!
- 各位能否看看用什么样的sql语句能实现这个操作,谢谢
- 应用服务器执行客户端请求,为什么总是串行的?
- 如何获取richedit滚动条位置
- 我剩不多分了,全给了,快帮帮我
- ★节日快乐,up有分★请问谁有在Explorer.exe中插入自己的Dll的例子?
var thread1: TThread1;
thread1 := tthread1.Create(False);
thread1.terminate;
procedure TThread1.Execute;
begin
OnTerminate := MainForm.ThreadsDone ;
end;
//执行到这里已经终止了,但是没有吧freeonterminated设成true.多一线程对线程对象不会自动被释放。一般在execute里面都是循环!
procedure TThread1.Execute;
begin
while not self.terminated do//thread.terminate只能把terminated属性变成true,要配合检测terminated才行。不能强行终止线程!
begin
//something;
end;
//OnTerminate := MainForm.ThreadsDone ;
end;
begin
freeOnTerminate:=True; //自动释放线程资源
OnTerminate := MainForm.ThreadsDone ;
end;
//DoSomething;这里是一边执行一个需要几分钟的存储过程,一边执行一个进度条,免得让用户还以为死机了.执行完了这个存储过程,我不想让我那个进度条在显示进度,所以就想终止线程。不然的话那个进度条老是不停止。
刚学线程。