Ich bin relativ neu in Delphi und probiere mich grade an multi threading.
Wieso gibt der Folgende code 2 mal "Test" in der Konsole aus?
Tut er nicht, jedenfalls in meiner etwas getuneten Testversion:
Delphi-Quellcode:
program RioTestframe_console;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, System.Classes;
type
TSelfThread =
class(TThread)
procedure Execute;
override;
end;
procedure TSelfThread.Execute;
begin
Writeln('
Test');
end;
procedure runTest;
var
SelfThread: TSelfThread;
begin
SelfThread := TSelfThread.Create(false);
try
selfthread.WaitFor;
finally
selfthread.free
end;
end;
begin
try
RunTest;
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
WriteLn(SLinebreak, '
Hit return to exit');
ReadLn;
end.
Vermutlich hast Du in deiner Version ein Problem, da Write/Writeln nicht threadsafe ist. Die Ausgabe ist gepuffert und da gibt es wohl in deinem Fall einen konflikt.