![]() |
Delphi-Version: 10.2 Tokyo
Multithreading führt doppel aus?
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?
Code:
type TSelfThread = class(TThread) procedure Execute; override; end; procedure TSelfThread.Execute; begin Writeln('Test'); end; var SelfThread: TSelfThread; begin try SelfThread := TSelfThread.Create(false); except on E: Exception do Writeln('Error'); end; end. |
AW: Multithreading führt doppel aus?
Zitat:
Delphi-Quellcode:
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.
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz