线程自动启动

时间:2014-07-14 14:56:15

标签: multithreading delphi delphi-xe3

虽然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。

我是否缺少某些东西,或者当我不希望它自动启动时,为什么线程会自动启动。

1 个答案:

答案 0 :(得分:1)

您需要在构造函数中调用inherited Create(True)。这将避免启动线程。

在调用Suspended之后将True设置为inherited Create()仍然会导致启动该线程(Delphi在该区域有一些错误......)