AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mein Thread und die Classes.pas...

Ein Thema von Kedariodakon · begonnen am 22. Okt 2004 · letzter Beitrag vom 22. Okt 2004
Antwort Antwort
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#1

Mein Thread und die Classes.pas...

  Alt 22. Okt 2004, 11:40
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...

Delphi-Quellcode:
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;
Tjo wie bekomm ich den da raus, damit er endlich vernichtet wird?

Bye

Edit:
Zitat von Classes.pas:
Delphi-Quellcode:
      { This prevents a potential deadlock if the background thread
        does a SendMessage to the foreground thread }
Christian
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Mein Thread und die Classes.pas...

  Alt 22. Okt 2004, 11:44
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Mein Thread und die Classes.pas...

  Alt 22. Okt 2004, 11:49
Alles schon vorhanden...

Delphi-Quellcode:
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;
Problem ist, dass CurrentReadBuffer solange was macht bis was im Speicher ist...
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?
Christian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz