在delphi中,thread.terminated 并不是终止一个线程,而是给线程发一个通知。也就是
terminate:=true ,所以你完全可以在执行代码中处理就可以。
mythread.Execute;
begin
if not terminate then
begin end
else
begin
这里写下你想要执行的代码
end;
end;
terminate:=true ,所以你完全可以在执行代码中处理就可以。
mythread.Execute;
begin
if not terminate then
begin end
else
begin
这里写下你想要执行的代码
end;
end;
解决方案 »
- FREE PASCAL/LAZARUS 与 DELPHI 全面比较
- 如何取出dbgrid选定行的值?
- 谁用DELPHI读写过AutoCAD图档中图块的信息?给我点提示!!!
- 取IE浏览器的URL地址
- 如何释放Timage的动态数组对象?
- 如何调用Windows Shell菜单之----Windows Shell菜单中当没有目录和文件选中时又当如何将其获取?
- Delphi里让输入Edit的字符变成‘*’的属性是什么?
- 在dbgrid中按某个字段对记录集进行排序的问题
- 如何确定局网指定目录是否存在?(最后的分了)
- 怎样得知DELPHI某组件类的原代码?
- 如何在delphi中实现连接网站,浏览。
- 怎样用Delphi的NMUDP1.sendstream方法实现对其他程序的固定格式的参数传递?小弟急需解决,谢谢!!
mythread.terminate:=true
就会执行
"这里写下你想要执行的代码"
TMonitorStartThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure OnTerminate;override;
end; procedure tmonitorstartthread.OnTerminate ;
begin
showmessage('jinru');
end;我在执行monitorstartthread1.onterminate时候,发现系统有2个此事件,很明显我没有继承老的,我该怎么做?
terminate是一个只读属性,不能这样写。可以mythread.terminated方法执行。
但是不能马上执行你要执行的代码,他至少要执行完你正在执行的代码,才执行。
但是你可以在执行每个指令的时候都判断一下terminated是否为真。
TMonitorStartThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
destructor Destroy; override;
end;destructor Tmonitorstartthread.destroy;
var
MonitorEnd: function(): dword; stdcall;
begin
MonitorEnd := Getprocaddress(hdll, 'MonitorEnd');
MonitorEnd();
end;然后我执行Tmonitorstartthread.destroy;
也可以吧?