AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Spezielle Message, wenn Taskmanager Programm beendet
Thema durchsuchen
Ansicht
Themen-Optionen

Spezielle Message, wenn Taskmanager Programm beendet

Ein Thema von Ines · begonnen am 20. Okt 2010 · letzter Beitrag vom 22. Okt 2010
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#31

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 21. Okt 2010, 14:24
Naja, keiner wird dein programm über den Taskmanager beenden, da es nicht eingefroren ist, daher könnte man dann im OnClose Ereignis einfach die DB Verbindung schließen lassen, falls Sie offen ist.

Korrigiert mich falls ich falsch liege, aber auf den ersten Blick wäre das für mich der einfachste und komfortabelste Weg für dich und den Kunden.
OnClose wird nicht ausgelöst, wenn das Programm im Taskmanager per "Prozess beenden" gekillt wird. Aber das hatten wir schon und das ist genau das Problem.
Der Vorschlag von youuu beruht ja darauf, die Abfrage in einem Thread auszulagern.
Dadurch friert dem User die Anwendung nicht ein und er hat keine Veranlassung die Anwendung per TaskManager abzuschießen.

Somit würden die Fälle, wo das doch passiert erheblich verringert, so dass man dann auch den Umstand des Rechner-Neustarts in Kauf nehmen könnte.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#32

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 21. Okt 2010, 14:46
Ah, Okay, das mit dem Thread haben ich überlesen. Sorry.

Und wer beendet die Threads?
Die Threads warten genauso auf eine Antwort vom DB-Server wie die Anwendung selbst auch. Das Problem, dass das Programm (die DB) immer langsamer läuft, ist damit nicht beseitigt.

Beenden kann ich das Programm noch immer nicht, weil das Programm die Threads nicht beenden kann, da diese noch auf eine Antwort der DB warten.

Also bleibt wieder nur "Prozess beenden".
Und wenn das Programm gekillt wird, werden dann die Threads korrekt beendet?
Ich glaube nicht. Das Problem bleibt das gleiche.

Seht ihr das anders?
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#33

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 21. Okt 2010, 14:54
einen Abbrech Button, der dann die Verbindung schließt?
Umgeht dieses Problem, denke ich.

Edit: Dabei fällt mir ein kann man auch im OnClose Ereignis schauen ob noch ein Thread aktive ist und ggf. "killen" und DB Verbindung schließen?
Steven

Geändert von youuu (21. Okt 2010 um 15:03 Uhr)
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#34

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 21. Okt 2010, 15:10
Bin mir nicht sicher, ob sich eine DB-Verbindung einfach so abbrechen läßt, während noch auf eine Antwort gewartet wird.

Selbst der Abbrech-Button wird erst dann wirken, wenn die Antwort der DB da ist.
Alles Vermutung, müsste man mal testen.
Kommt wahrscheinlich auch auf das eingesetzte DBMS und die verwendeten Delphi-Komponenten an.
  Mit Zitat antworten Zitat
Ines

Registriert seit: 22. Aug 2006
Ort: Augsburg
96 Beiträge
 
Delphi 2009 Enterprise
 
#35

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 21. Okt 2010, 15:41
Das sehe ich anders! Mag durchaus sein, dass beim Einfügen oder Ändern eines Datensatzes die DB länger mit sich selbst beschäftig ist, aber der Vorteil, das Anfragen schneller beantwortet werden (wegen dem definierten Index), überwiegt IMHO den Nachteil.

160.000 Blobs nach mehreren Stichworten zu durchsuchen halte ich nicht für sinnvoll. Besser wäre es evtl. den Inhalt der Blobs mittels Schlagworten in eigenen Tabellen zu indizieren und in diesen Tabellen nach den Stichworten zu suchen.
1. Es werden mehr Datensätze abgeändert als durchsucht - deshalb nützt mir hier ein Index nichts. Aber ich verwende Indices. Wir haben keine DB-Tabelle ohne Index.
2. In diesen Blogs befinden sich Befunde. Bei jedem Befund müßte der Arzt ein oder mehrere Schlagworte vergeben - da bekommt der Begriff Schlagwort eine neue Bedeutung für mich. Vor Jahren haben wir versucht, eine Struktur mittels Diagnoseschlüssel einzubauen - gescheitert !!

Zitat:
Bin mir nicht sicher, ob sich eine DB-Verbindung einfach so abbrechen läßt, während noch auf eine Antwort gewartet wird.
Stimmt, erst nach dem 1. gefundenen Satz ist die DB wieder "dialogbereit".
Dann kann ich z.B. die Verarbeitung abbrechen, die Verbindung trennen usw.
Aber solange die DB arbeitet komme ich PC-seitig nicht weiter (nur am Server selbst kann ich den Prozess abschießen).

Ines
Ines
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#36

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 21. Okt 2010, 15:53
Hm dann vielleicht, auch wenn man es eigentlich nicht soll den Prozess mit der DB Abfrage unsanft beenden und dann die DB-Verbindung beenden, beim klick auf den Abbrech Button.

Hab ich zwar noch nie machen müssen, aber ist viellecht eine Option?
Steven
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#37

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 21. Okt 2010, 16:24
1. Es werden mehr Datensätze abgeändert als durchsucht - deshalb nützt mir hier ein Index nichts. Aber ich verwende Indices. Wir haben keine DB-Tabelle ohne Index.
Das wiederspricht doch nicht meiner Aussage. Vorteil vs. Nachteil

2. In diesen Blogs befinden sich Befunde. Bei jedem Befund müßte der Arzt ein oder mehrere Schlagworte vergeben - da bekommt der Begriff Schlagwort eine neue Bedeutung für mich. Vor Jahren haben wir versucht, eine Struktur mittels Diagnoseschlüssel einzubauen - gescheitert !!
Die Schlagworte muß doch nicht der Arzt erstellen. Das kann die Anwendung von sich aus tun, oder ein Trigger auf der Befund-Tabelle kann u.U. diesen Job erledigen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#38

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 21. Okt 2010, 17:27
Die Blobs gefallen mir nicht, da gibt es wirklich ekelhafte Laufzeiten.
Alle anderen Anforderungen sollten sich durch geschickte Abfragen, die die zurückgegebenen Daten einschränken auf ein erträgliches Maß reduzieren lassen.
Nach meiner Erfahrung gibt es hier zwei "bottlenecks" zum einen die Datenmenge, die über die Leitung gequält wird, zum anderen das entgegennehmende Programm.
Z.B. Empfangene Daten direkt in ein Stringgrid schreiben ist weder performant, noch "Mengensicher".

Das ursächliche Problem ist ja, daß der Benutzer nicht sieht, das sich etwas tut, und er wohl darum das Programm abschießen will. Also gibt man ihm was er braucht, "action" oder ein augenscheinlich reagierendes Programm (minimieren,maximieren etc)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Ines

Registriert seit: 22. Aug 2006
Ort: Augsburg
96 Beiträge
 
Delphi 2009 Enterprise
 
#39

AW: Spezielle Message, wenn Taskmanager Programm beendet

  Alt 22. Okt 2010, 08:42
Die Schlagworte muß doch nicht der Arzt erstellen. Das kann die Anwendung von sich aus tun, oder ein Trigger auf der Befund-Tabelle kann u.U. diesen Job erledigen.
Sorry, da muß ich mich erst bei Oracle erkundigen, wie das gehen könnte. Wir verwenden hier eine Oracle RDB die im Gegensatz zu einer Oracle DB verschiedene Funktionen nicht kann/unterstützt.

Bis dahin bleib' ich bei meiner Lösung. Auch wenn das hier einigen Unmut auslösen wird: der Nutzer wird bestimmt vorsichtiger mit dem Abbrechen eines Programmes via Taskmanager sein. Ein Abbrechen "just for fun" wird damit auf jeden Fall verhindert. Bei einigen läuft der Taskmanager generell. Und statt auf "Programm beenden" klickt man dann auf "Task beenden". (viel professioneller )

Vielen Dank für Eure Anregungen und Hilfe
Ines
Ines
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 12:26 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