首页 > 解决方案 > 调用 TThread 的 Inherited Create 时如何解决访问冲突的问题?

问题描述

在 Delphi 10.3 中,我正在创建 TThread 的子类。在创建子类时,我得到一个访问冲突异常。

当“FSuspended := not 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()覆盖 Create ;覆盖编译器给出E2170 Cannot override a non-virtual method,所以这不是解决方案。

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

标签: multithreadingdelphiaccess-violation

解决方案


推荐阅读