在Delphi中定义一个线程类,部分代码如下:
//类声明
type
TRecThrd=class(TThread)
   private
    protected
      procedure Execute; override;
      procedure Receivedata;
    public
     F:TextFile;
      FCount:integer;
      StopFlag:boolean;     constructor Create;
     procedure Resume;
     procedure Suspend;
   end;
...
//实例
RecThrd:TRecThrd;
...
//初始化类
constructor TRecThrd.Create;
begin
   Suspended:=true;
   FreeOnTerminate:=true;
   StopFlag:=true;
   Inherited Create(true);
end;系统为Win2000+Sp3+Delphi(英文版)
原来的系统在编译时没什么问题,后来整个系统重装(包括操作系统)后代码没有变,运行时出现了错误如下:注:调试发现在该类的实例的初始化时出错.( constructor Create过程)标题:Debugger Exception Notification
详细:Project Project1.exe raised exception class EThread with message
'Thread Error: 句柄无效.(6)' Process stopped.Use Step or Run to continue.
操作:OK/Help继续执行后出现.
标题:Project1
详细:Thread Error:句柄无效.(6)是什么原因,与系统有关系吗,为什么原来的系统没有错误?

解决方案 »

  1.   

    应该和系统没关系试试看改成这样
       Inherited Create(true);
       Suspended:=true;
       FreeOnTerminate:=true;
       StopFlag:=true;
      

  2.   

    Inherited Create(true);
    调用父类的构造方法,父类构造函数中的代码还没有执行,这时候调用它的属性等当然会有问题了就好像机器还没有造好,你就要使用它,当然会出问题了
      

  3.   

    一般来说Inherited Create(true);放前面
    inherited Destroy;放后面