在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;
解决方案 »
- 字符串转换到UTF-8时,汉字把引号冲掉的问题,高手进,在线急等
- 在线程里面声明一个控件对象,提示“尚未调用CoInitialize”问题,求助大家
- 运行时为何会弹出"Invalid argument to date encode",如何解决???
- 要他触发 这个ReceiveData 怎么做?
- 寻人
- 不知道有没有人,帮我看看fastreport的问题
- 关于delphi的保存原文件时出现错误(无效页访问的提示窗口,然后delphi就关了)问题?
- dbgrid中的lookup --- !! operation not applicable
- 兄弟们救命啊。。怎样在不通过BDE的方法打开VFP的DBF数据表文件。。有没有什么外部控件
- 请问如何控制系统启动时各个启动项的顺序?
- 如何在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;
也可以吧?