![]() |
Mein Thread und die Classes.pas...
So ich habe follgendes Problem, ich rufe von außerhalb Destroy des Threads auf, obwohl er noch arbeitet (Mehr oder Weniger)...
Aber er wird net beendet, sondern er hängt in der Classes.pas im Wahrstem Sinne des Wortes in einer Endlosschleife fest... Und zwar im Unterem Teil... WaitResult ist immer 258... :wall:
Delphi-Quellcode:
Tjo wie bekomm ich den da raus, damit er endlich vernichtet wird? :gruebel:
function TThread.WaitFor: LongWord;
{$IFDEF MSWINDOWS} var H: array[0..1] of THandle; WaitResult: Cardinal; Msg: TMsg; begin H[0] := FHandle; if GetCurrentThreadID = MainThreadID then begin WaitResult := 0; H[1] := SyncEvent; repeat { This prevents a potential deadlock if the background thread does a SendMessage to the foreground thread } if WaitResult = WAIT_OBJECT_0 + 2 then PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE); WaitResult := MsgWaitForMultipleObjects(2, H, False, 1000, QS_SENDMESSAGE); CheckThreadError(WaitResult <> WAIT_FAILED); if WaitResult = WAIT_OBJECT_0 + 1 then CheckSynchronize; until WaitResult = WAIT_OBJECT_0; end else WaitForSingleObject(H[0], INFINITE); CheckThreadError(GetExitCodeThread(H[0], Result)); end; Bye Edit: Zitat:
|
Re: Mein Thread und die Classes.pas...
Mach ein destructor im Thread. Dort setzt du ein merkmal. In der Thread Schleife (dort hast du doch hoffentlich eine Schleife) fragst du dieses Merkmal ab und springst dann aus der Schleife raus.
|
Re: Mein Thread und die Classes.pas...
Alles schon vorhanden...
Delphi-Quellcode:
Problem ist, dass CurrentReadBuffer solange was macht bis was im Speicher ist...
Procedure TReadThread.Execute;
Begin SetName; Try While Not Terminated Do Begin MyTIdTCPclient.ReadTimeout := 0; If Assigned( FOnRead ) Then FOnRead( MyTIdTCPclient, MyTIdTCPclient.CurrentReadBuffer ); End; Except //Da Fehlt noch was ganz ganz Wichtiges, die Fehlerbehandlung! End; End; Da das mein Main-Programm immer Frezzed hab ichs im Thread ausgelagert, aber nu will ich den Thread aber zerstören, aber es ist nix im Speicher, also hängt er an der stelle scheinbar.... Und nu? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 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