gpt4 book ai didi

delphi - 重写 Free 方法安全吗?

转载 作者:行者123 更新时间:2023-12-03 15:42:29 38 4
gpt4 key购买 nike

覆盖Free是否安全方法?我问是因为我想使用这样的东西。我知道使用TerminateThread非常难看,但就我而言,立即终止进程及其所有线程非常重要。

我见过System.pas中声明的__free方法,但我不知道它是否与TObject.Free有关。方法,这就是我问它是否安全的原因。

type
TMyThread = class(TThread)
private
destructor Destroy; override;
public
procedure Execute; override;
constructor Create;
procedure Free(const Force: Boolean = False); // is it safe to use this?
end;

procedure TMyThread.Free(const Force: Boolean = False);
begin
if not Force then
begin
Terminate;
WaitFor;
end
else
TerminateThread(Handle, 0);

inherited Free;
end;

destructor TMyThread.Destroy;
begin
// free resources etc.
inherited Destroy;
end;

谢谢

最佳答案

您无法覆盖Free,因为它不是虚拟的。如果您定义自己的 Free 方法,并且静态类型是您的类类型,它将隐藏 TObject.Free 方法(请注意编译器警告)。这绝对不是一个好主意,因为对象将永远不会被销毁。

我看不出你有任何理由要这样做。如果您确实想要使用TerminateThread,那么只需为您的线程类提供另一个方法ForceTerminate,您可以在其中调用TerminateThread .

关于delphi - 重写 Free 方法安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7496495/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com