在delphi中,thread.terminated 并不是终止一个线程,而是给线程发一个通知。也就是
terminate:=true ,所以你完全可以在执行代码中处理就可以。
mythread.Execute;
begin
  if not terminate then
  begin  end
  else
  begin
    这里写下你想要执行的代码
  end;
end;

解决方案 »

  1.   

    我是不是在主程序中写
    mythread.terminate:=true 
    就会执行
    "这里写下你想要执行的代码"
      

  2.   

    type
      TMonitorStartThread = class(TThread)
      private
        { Private declarations }
      protected
        procedure Execute; override;
        procedure OnTerminate;override;
      end; procedure tmonitorstartthread.OnTerminate ;
     begin
     showmessage('jinru');
     end;我在执行monitorstartthread1.onterminate时候,发现系统有2个此事件,很明显我没有继承老的,我该怎么做?
      

  3.   

    to:liaokuo(辽阔) 
    terminate是一个只读属性,不能这样写。可以mythread.terminated方法执行。
    但是不能马上执行你要执行的代码,他至少要执行完你正在执行的代码,才执行。
    但是你可以在执行每个指令的时候都判断一下terminated是否为真。
      

  4.   

    type
      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;
    也可以吧?