Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Thread vor Start beenden/zerstören ? (https://www.delphipraxis.net/93552-thread-vor-start-beenden-zerstoeren.html)

DataCool 7. Jun 2007 12:23


Thread vor Start beenden/zerstören ?
 
Hi,

mal ne generelle Frage :

Ich erzeuge einen Thread suspended !

Rufe dann z.B. myThread.login auf,
wenn Login fehlschlägt möchte ich den Thread zerstören/beenden.

Kann ich das einfach mit :

Delphi-Quellcode:
MyThread.free;
//oder
FreeAndNil(myThread);
machen obwohl der Thread selber die Eigenschaft FreeOnTerminate := true hat ?

Greetz DataCool

marabu 7. Jun 2007 13:20

Re: Thread vor Start beenden/zerstören ?
 
Hallo,

zuerst möchtest du deinen Thread beenden, wenn das Login fehlschlägt.Erst danach möchtest du ihn freigeben. Der Thread beendet sich automatisch, wenn du keine lebenserhaltenden Maßnahmen ergreifst - z.B. in einer Schleife immer wieder den Login-Dialog zeigen.

Die Freigabe kannst du über FreeOnTerminate steuern ODER selbst erledigen - nicht OBWOHL.

Grüße vom marabu

KesseK 7. Jun 2007 13:29

Re: Thread vor Start beenden/zerstören ?
 
Zitat:

Zitat von marabu
Hallo,

zuerst möchtest du deinen Thread beenden, wenn das Login fehlschlägt.Erst danach möchtest du ihn freigeben. Der Thread beendet sich automatisch, wenn du keine lebenserhaltenden Maßnahmen ergreifst - z.B. in einer Schleife immer wieder den Login-Dialog zeigen.

Die Freigabe kannst du über FreeOnTerminate steuern ODER selbst erledigen - nicht OBWOHL.

Grüße vom marabu

wie soll das bitte gehen?

DataCool 7. Jun 2007 13:31

Re: Thread vor Start beenden/zerstören ?
 
Hi Marabu,

Du hast mich falsch verstanden !

Login ist eines Function des Threads,
aber ich rufe Login auf bevor ich überhaupt den Thread mit Resume starte !

Falls also Login fehlschlägt ist der Thread noch suspended und in dem Zustand möchte ich Ihn freigeben/zerstören und gar nicht erst laufen lassen.

Greetz DataCool

Robert Marquardt 7. Jun 2007 13:39

Re: Thread vor Start beenden/zerstören ?
 
Mach doch erst ein Terminate und dann ein Resume. Ich glaube ein Thread *muss* aufwachen damit er terminieren kann.

DataCool 7. Jun 2007 13:44

Re: Thread vor Start beenden/zerstören ?
 
Hi,

jap denke Du hast Recht habs gerade getestet :

Delphi-Quellcode:
Var CamThd : TCamUploadThread;
begin
  CamThd := TCamUploadThread.Create('127.0.0.1',10017);
  if not CamThd.Login then
    FreeAndNil(CamThd)
  else
    CamThd.Resume;
end;
Gibt beim FreeAndNil nen Fehler: "Ungültiges Handle

Greetz DataCool

Luckie 7. Jun 2007 14:24

Re: Thread vor Start beenden/zerstören ?
 
Zitat:

Thread vor Start beenden/zerstören?
Klingt für mich nach einem klassischen Designfehler. Wie kann ich etwas stoppen, was noch gar nicht angefangen hat? Das ist unlogisch. Nimm den Dialog aus dem Thread und Starte ihn erst nach einem erfolgreichen Login.

DataCool 7. Jun 2007 14:28

Re: Thread vor Start beenden/zerstören ?
 
Hi Luckie,

hab ich schon gemacht ;-)

Greetz DataCool


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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