|
@@ -11,14 +11,13 @@ type
|
|
|
|
|
|
constructor TThread.Create(CreateSuspended: Boolean;
|
|
|
const StackSize: SizeUInt = DefaultStackSize);
|
|
|
-var
|
|
|
- Flags: Integer;
|
|
|
begin
|
|
|
inherited Create;
|
|
|
FSuspended := CreateSuspended;
|
|
|
- Flags := 0;
|
|
|
- if CreateSuspended then Flags := CREATE_SUSPENDED;
|
|
|
- FHandle := BeginThread(nil, StackSize, @ThreadProc, pointer(self), Flags,
|
|
|
+ FInitialSuspended := CreateSuspended;
|
|
|
+ { Always start in suspended state, will be resumed in AfterConstruction if necessary
|
|
|
+ See Mantis #16884 }
|
|
|
+ FHandle := BeginThread(nil, StackSize, @ThreadProc, pointer(self), CREATE_SUSPENDED,
|
|
|
FThreadID);
|
|
|
if FHandle = TThreadID(0) then
|
|
|
raise EThread.create('Failed to create new thread, code:'+inttostr(getlasterror));
|