虽然suspend属性设置为true,但我的线程类是自动启动的。 我有一个基类,作为线程类的数组。这是我的班级声明。
Type
cSolution = Class(TThread)
Private
procedure FindLocalMinimum;
procedure AddWorker;
procedure RandomSortCompressors;
procedure FindBestNetwork;
Public
Network : cNetwork;
Workers : array of cWorker;
Compressors : array of cCompressorData;
IsAllWorkersDone : boolean;
ID : integer;
Procedure CreateWorkers;
Constructor Create; overload; // This constructor uses defaults
Constructor Create(aNetwork : cNetwork; aCompressors : array of cCompressorData); overload; // Copy constructor
Destructor Destroy; override; //Destructor
procedure Execute; override;
end;
implementation
/// <summary>Default constructer
/// </summary>
constructor cSolution.Create;
begin
inherited;
IsAllWorkersDone := false;
Suspended := true;
ID := 99;
end;
我在我调用execute函数的地方和execute函数的开头添加了断点。我称之为的地方永远不会被触发。但是触发了执行函数本身的断点。触发时,暂停的属性为false。
我是否缺少某些东西,或者当我不希望它自动启动时,为什么线程会自动启动。
答案 0 :(得分:1)
您需要在构造函数中调用inherited Create(True)
。这将避免启动线程。
在调用Suspended
之后将True
设置为inherited Create()
仍然会导致启动该线程(Delphi在该区域有一些错误......)