首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于TThread的释放有关问题,求高人

2013-01-23 
关于TThread的释放问题,求高人。本帖最后由 twins7713 于 2013-01-11 15:09:47 编辑本人学delphi不久,对TTH

关于TThread的释放问题,求高人。
本帖最后由 twins7713 于 2013-01-11 15:09:47 编辑 本人学delphi不久,对TTHREAD实在理解不够深,总是在工程上的程序有错,这里就不拿原代码了,太多了不好观看,这里就做了个类似的例子,请大家看下


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type  

  TEX1=class(TThread)
protected
procedure Execute; override; 
public
constructor create(CreateSuspended:Boolean;FOT:Boolean);//PODate:TList);
  end;

  TForm1 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    FEX1:TEX1;
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TEX1 }

constructor TEX1.create(CreateSuspended, FOT: Boolean);
begin
  inherited create(CreateSuspended);
 FreeOnTerminate:=fot;
end;

procedure TEX1.Execute;
begin
  ShowMessage('3');
end;    

procedure TForm1.btn1Click(Sender: TObject);
begin
 if not Assigned(FEX1)  then
 begin
 FEX1:=TEX1.Create(True,True);
 ShowMessage('1');
 FEX1.Resume
 end
 else
 ShowMessage('2');
end;
end.

程序运行了,显示的先是‘1’ ,在是‘3’,这里是正确的,在点击BUTTON时,显示的就是‘2’。这里就不对了,既然现实了‘3’,说明已经执行完了,应该自动释放掉,为何这里没有,我想TThread已经释放掉了,但是句柄还在,为何会这样,求高人知道下。
[解决办法]
建议使用win api判断线程退出码 具体自己查一下 
给你个大牛开的贴关于线程的 你可以参考一下
http://bbs.csdn.net/topics/360046056

热点排行