일시 중지 된 속성이 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입니다.
자동 시작을 원치 않을 때 누락 된 항목이 있거나 스레드가 자동으로 시작되는 이유가 있습니까?
이 힌트 (델파이는 그 지역 ... 버그의 몇 가지가 있습니다) 공개. 공개적으로 만드는 것은 다른 코드가 직접 호출 할 수 있으므로 위험하므로 예기치 않은 "영향"이 발생할 수 있습니다. – mjn