我在使用writeLn後在控制檯中看到了文本問題。WriteLn在創建線程後打印出錯
我的代碼:
(...)
procedure TTestApp.Run;
var
MyThread:TMyThread;
begin
writeLn('Start new program');
writeLn('Start new thread');
MyThread:=TMyThread.Create;
sleep(1000);
writeLn('Next part of program');
end;
var
TestApp: TTestApp;
begin
TestApp := TTestApp.Create;
TestApp.Run;
TestApp.Free;
end.
使用這個代碼後我沒有得到我的控制檯我的預期。我得到:
Start new program.
Start new thread
New thread started
Start new thread
,但我預計:
Start new program.
Start new thread
New thread started
Next part of program.
MyThread的只是使用writeLn和打印 「新線開始」:
TMyThread = class(TThread)
protected
procedure Execute; override;
public
constructor Create;
end;
constructor TMyThread.Create;
begin
inherited Create(false);
end;
procedure TMyThread.Execute;
var
quit:boolean;
begin
FreeOnTerminate := False;
writeLn('New thread started');
quit:=false;
repeat
//some infinite stuff
until quit;
end;
你能幫助我嗎?我做錯了什麼?
它看起來像創建新的線程,我不能在控制檯上打印從TestApp.Run
由於您沒有顯示所有代碼,因此很難猜測發生了什麼。 FPK試圖從您發佈的內容中重新構建完整的代碼,並且他/她在Delphi中獲得的結果與您期望的相同。這種「無限的東西」可能(直接或間接)開始一個新的線程? –
是的,這個「無限的東西」開始一個新的線程。 – Mlody87
那你爲什麼想知道?請注意,當循環退出時,什麼都不顯示。 –