AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie beende ich mein Programm/Thread richtig ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie beende ich mein Programm/Thread richtig ?

Ein Thema von PattyPur · begonnen am 12. Sep 2002 · letzter Beitrag vom 13. Sep 2002
Antwort Antwort
PattyPur

Registriert seit: 27. Aug 2002
7 Beiträge
 
#1

Wie beende ich mein Programm/Thread richtig ?

  Alt 12. Sep 2002, 05:47
Ich hab da mal was ausprobiert :

Code:
program threadApp;

uses
  classes;

type
  TCheckThread = class(TThread)
  protected
    procedure Execute; override;
  end;

{$R *.res} 

var
  CheckThread : Tcheckthread;
 
Procedure TCheckThread.execute;
var
    found:boolean;
    i:integer;
begin
  while not terminated do begin
    //.... hier passiert halt was ! 
  end;
end;

begin
  Checkthread:=Tcheckthread.Create(false);
  Checkthread.Execute;
end.

Das programm läuft wenn es gestartet wurde einfach weiter und weiter und weiter... - Soll es auch nur wenn windows runtergefahren wird kann dieses Programm nicht von Windows beendet werden und ich kann nur mit Task->beenden mein programm schliessen.

Wie reagiere ich da richtig auf Die anweisung von Windows ?
also ich weiss das ich irgendwie eine art onClose - Event benötige in dem ich auch sage
Code:
 
Checkthread.terminate;
zuerst hatte ich mein Programm in verbindung mit einer TForm (standard Anwendung halt) und hab das onClose event der Form benutzt um meinen thread zu terminieren - nur da ich die Form für sonst nix brauche will ich auch ohne sie auskommen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 12. Sep 2002, 06:05
Pack das mal in OnCloseQuery rein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
PattyPur

Registriert seit: 27. Aug 2002
7 Beiträge
 
#3
  Alt 12. Sep 2002, 07:20
und woher soll ich das nehmen ich habe doch keine komponente die dieses Event besitzt
ich will aj ohne eine Form auskommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 12. Sep 2002, 07:27
Dann mach es ohne VCL. Registrier eine Fensterklasse. Erzeuge ein unsichtbares Fenster, dann hast du eine Messageloop in der du WM_QUERYENDSESSION abfagen kannst und deine Thread beenden kannst.

Und wenn du dann noch was drauf hast, nimmst du auch nicht die Threadklasse von der VCL, sondern machst es zu Fuß mit der WinAPI.
Beispielcode zu Threads: SortIt auf meiner Seite.

Und dass dein Programm nicht beendet wird, ist auch klar. Es hat ja keine Messageloop an die Windows ein WM_QUIT beim Runterfahren senden könnte. Ergo läuft es und läuft und läuft und Windows fährt nicht runter, weil noch ein Prozess (Programm will ich es mal nicht nennen ) aktiv ist, der sich nicht beenden läßt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 12. Sep 2002, 11:58
Moin Zusammen,

bei einem Konsolenprogramm könnte man sich da wohl auch mit SetConsoleCtrlHandler behelfen.
Die Routine fängt dann das CTRL_LOGOFF_EVENT und das CTRL_SHUTDOWN_EVENT ab.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
PattyPur

Registriert seit: 27. Aug 2002
7 Beiträge
 
#6
  Alt 13. Sep 2002, 23:03
Vielen dank werd es gleich mal ausprobieren

Nachtrag:
@Luckie dein Sort'It programm sieht nach einem Durchlauf bei mir so aus:

http://www.pattypur.de/pictures/SortIt.jpg

(ich dachte ich zeigs Dir mal
  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 04:10 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