![]() |
ExitCode von GetExitCodeThread in TThread setzen?
Hallo,
ich möchte gern den ExitCode von einem Thread mit WinAPI GetExitCodeThread nach dem Beenden auslesen. Doch ich finde keine Möglichkeit den ExitCode in TThread zu setzen. Gibt es da eine Möglichkeit dies zu machen, wenn ich den Thread über Delphiklasse TThread erzeuge? lg, jus |
AW: ExitCode von GetExitCodeThread in TThread setzen?
In der Delphi-RTL heißt es
Delphi-Quellcode:
und ist aus unerfindlichen Gründen ein Integer aber...
TThread.ReturnValue
Delphi-Quellcode:
program Project1;
uses System.SysUtils, System.Classes, WinApi.Windows; procedure p(); var thread: TThread; threadExitCode: DWORD; begin thread := TThread.CreateAnonymousThread( procedure() begin TThread.SetReturnValue(42); end ); thread.FreeOnTerminate := False; thread.Start(); thread.WaitFor(); Win32Check( WinApi.Windows.GetExitCodeThread(thread.Handle, threadExitCode) ); WriteLn('Exit code: ', threadExitCode); end; begin try p(); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; ReadLn; end. |
AW: ExitCode von GetExitCodeThread in TThread setzen?
Zitat:
Delphi-Quellcode:
Und zwar habe ich den GetExitCodeThread erst nach dem Thread.Free gemacht, da ich geglaubt hatte, dass GetExitCodeThread auch nach einem Thread.Free funktionieren würde. Somit gab es das Thread.Handle garnicht mehr und ExitCode war immer Null. :duck:
procedure TForm1.Button3Click(Sender: TObject);
var ExitCode: DWORD; ThreadHandle: THandle; begin if TestThread <> NIL then begin ThreadHandle := TestThread.Handle; TestThread.Terminate; TestThread.WaitFor; FreeAndNil(TestThread); GetExitCodeThread(ThreadHandle, ExitCode); end; end; Wieder mal was gelernt. Vielen Dank! :thumb: lg, jus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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-2025 by Thomas Breitkreuz