调用TThread的Inherited Create时如何解决访问冲突的问题?

时间:2019-03-27 09:46:36

标签: multithreading delphi access-violation

在Delphi 10.3中,我正在创建TThread的子类。创建子类时,出现访问冲突异常。

当“ FSuspended:=不是FExternalThread;”时,在System.Classes的TThread.Create中发生冲突。正在执行。

这是给出错误的代码。

unit TestThread;

interface

uses System.Classes;

type

  TTestThread = class(TThread)

  private

  protected
    procedure Execute; override;

  public
    constructor Create();
    destructor Destroy(); override;
  end;

procedure TestThreadClick();

implementation

constructor TTestThread.Create();
begin
  //inherited;
  //inherited Create;
  inherited Create(True);
  FreeOnTerminate := False;
end;

destructor TTestThread.Destroy();
begin
end;

procedure TTestThread.Execute;
begin
end;

procedure TestThreadClick();
var
  TestThread: TTestThread;
begin
  TestThread.Create();
  TestThread.Start();
  TestThread.Destroy();
end;

end.

继承;,继承Create; 继承Create(True); 指令均给出访问冲突。

如果我使用构造函数覆盖Create(); override ; 编译器给出 E2170无法覆盖非虚拟方法,所以这不是解决方案。

有人知道这里出什么问题吗?

0 个答案:

没有答案