multithreading - 调用 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,所以这不是解决方案。
有人知道这里有什么问题吗?
解决方案
推荐阅读
- visual-studio - 在 Visual Studio 2015 中运行 Silverlight 应用程序
- javascript - 从脚本中删除调试器行
- c++ - C++ 从 void* 中恢复指向未知关联容器的元素
- docker - 如何在 .sh 脚本中 Dockerize 多个 python 脚本?
- actions-on-google - action-on-google 如何在按下浏览轮播时确认消息
- c# - 泛型类与泛型方法
- python - 从生成器训练 keras 模型,获取每个 epoch 的反馈并利用 Early stop 算法
- javascript - JavaScript 数组 reduce() 累加器为空
- angular - Spring boot - 预检响应没有 HTTP ok 状态
- java - 带参数的构造函数的 Java Jackson 注释