Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Problem nach 48 offenen Fenstern (https://www.delphipraxis.net/160694-problem-nach-48-offenen-fenstern.html)

hoschiepeter 26. Mai 2011 15:51

Problem nach 48 offenen Fenstern
 
Hallo,

Ich suche schon seit längerem ein Problem in unserer Anwendung. Es ist meinem Kollegen jetzt gelungen das Problem zu reproduzieren.

Folgendes Programm hat er erstellt.

Eine Anwendung die 48 Forms hat. Es gibt nur einen Eintrag in der Taskleiste.
Dann hat er eine Button auf einem Formular, dieser löst eine Endlosschleife aus. Auf einmal werden in der Taskleiste 2 Programme angezeigt.
Dies ist nur unter Windows Server 2003 und nicht unter XP zu reproduzieren.

Hat jemand schon einmal von diesem Problem gehört?
Ich weis auch nicht wie wir den Ursprung des Problems finden können. Bitte schickt mir ein paar anregungen. SC vom testprogramm kann ich noch zur verfügung stellen.

turboPASCAL 26. Mai 2011 16:03

AW: Problem nach 48 offenen Fenstern
 
Ich kann soweit nicht weiterhelfen...

wenn aber ein Programm > = 48 Fenster nutzt würde ich es von von der Platte löschen denn so richtig übersichtlich kann das nicht werden.
Wäre es nicht besser auf Frames oder Pages auszuweichen ?

Deep-Sea 26. Mai 2011 16:06

AW: Problem nach 48 offenen Fenstern
 
Dito @ turboPASCAL.
Und wenn ein Prog in einer Endlosschleife hängt, ist es doch eh egal, was dann für weitere Effekte auftreten. Man muss es dann ja eh abschießen, da der Hauptfehler - das Aufhängen - ja schon passiert ist.

himitsu 26. Mai 2011 17:22

AW: Problem nach 48 offenen Fenstern
 
Bei "älteren" Delphis lag Application in der Startleiste, wärend bei neueren Delphis standardmäßig die Hauptform dort angezeigt wird.
(wurde mit Windows Vista/7 notwendig ... vorallem für die Vorschaufunktion dort)

Wenn nun die Anwendung hängt, kann es passieren, daß aus irgendwelchen Gründen beide Forms angezeigt werden.
(Application besitzt eine "versteckte" Form für Steuerungszwecke)


Abgesehn davon sollte eine Anwendung eh nicht "lange" hängen bleiben ... ist für den Benutzer nicht so schön.

jaenicke 26. Mai 2011 22:52

AW: Problem nach 48 offenen Fenstern
 
Der Punkt ist: Wenn das Programm nicht mehr reagiert, übernimmt Windows die Kontrolle um zu retten was zu retten ist. Wenn Windows erkennt, dass da ein Taskleisteneintrag fehlen könnte, wird der hinzugefügt. Genauso versucht Windows ab Vista den Fensterinhalt dennoch weiter anzuzeigen und nur mit einem weißen Schleier anzuzeigen, dass das Fenster nicht mehr reagiert.

Dieses Verhalten tritt im normalen Betrieb aber nicht auf. Wenn das Programm nicht mehr reagiert, ist irgendetwas schief gegangen. Und dann hat man ganz andere Probleme als mehrfache Taskleisteneinträge...

FredlFesl 27. Mai 2011 07:07

AW: Problem nach 48 offenen Fenstern
 
Fassen wir zusammen: Ein Programm mit 1 (oder 2) Fenstern hängt und neuere Windows-Versionen produzieren manchmal 2 Fenster in der Titelleiste, aus welchen Gründen auch immer.
Da der Fragesteller nicht gefragt hat, ob 48 Formulare der Weisheit letzter Schluss sind, frage ich mich, wieso das dann kritisiert wird.
Er dachte vermutlich, das die hohe Anzahl etwas mit der Taskleisteneintragverdoppelungsproblematik zu tun hat.

hoschiepeter 27. Mai 2011 07:55

AW: Problem nach 48 offenen Fenstern
 
Erstmal vielen,vielen Dank für die Antworten.

Mein Beispiel ist natürlich nicht sinnvoll. Es sollte nur dazu dienen den Fehler nachzustellen.

Wir haben in unserer Anwendung einige 100 Formulare. Es passiert ab und zu, das in einem aktiven Formular eine Funktion ausgeführt wird, die ein paar Sekunden zu abarbeiten braucht. Dabei entsteht manchmal dieser Effekt, das es einen 2 Taskleisteneintrag gibt. Wird dieser Taskeintrag vom Benutzer aktiviert,so entstehen ganz neue Probleme z.B. im Rest des Programms wird dann kein Onclick - Event mehr abgearbeitet, usw. Man muss das Programm dann abschießen.

Mein Kollege hat dann diese Testapplikation in Delphi 7 gebaut und in diesem Programm passiert es immer erst ab 48 Formularen und nur auf Windows 2003 server. Auf Frames oder Pages kann aufgrund unserer Basisstruktur nicht ausgewichen werden.

Das ganze wird unter Delphi 7 entwickelt.

Bernhard Geyer 27. Mai 2011 08:02

AW: Problem nach 48 offenen Fenstern
 
Sind die Fenster immer schon erzeugt und nur nicht sichtbar? -> Erzeugung der Formulare erst wenn sie benötigt werden und freigabe wenn Sie nicht mehr benötigt werden, ansonsten belegen sie schon unnötigerweise GDI-Ressourcen.

Langandauernde Aktionen sollten wenn möglich in Thread verlagert werden. Falls das zu aufwending ist sollte regelmäßig die Message-Schleife des Programms bedient werden. Am einfachsten durch ein Application.ProcessMessage. Man sollte aber dafür sorgen das der User dann nicht versehentlich einen Button drückt und dann eine "parallele" Verarbeitung startet.

alfold 27. Mai 2011 09:26

AW: Problem nach 48 offenen Fenstern
 
Zitat:

PROBLEM nach 48 offenen Fenster
Ich kenne zwar viele VerwaltungsSoftware und andere in Firmen,
hab aber noch keine gesehen die soviele Fensterbenötigt:wink:
selbst bei grossen DB nicht.
Darum mal zur Aufklärung.
1. sind den alle >48 Fenster zur gleichen Zeit sichtbar?
(solls ja auch geben:shock:)
2. habt ihr euch schon mal die CPUlast und resourcen angschaut, nach dem ihr die >48 Fenster aktiviert bzw evtl wieder geschlossen habt?
3. Server2003 verwaltet die resourcen anders als XP und Vista/7
(je nach configuration)
4. für was benötitg man ein Fenster
Zitat:

das in einem aktiven Formular eine Funktion ausgeführt wird, die ein paar Sekunden zu abarbeiten braucht.
?
Selbst wenn man sagt, ich muss da Daten eingeben die dann berechnet werden, weil sie wo anders benötigt werden usw....
Ich befürchte....
Hier ist konzeptionell etwas schief gegangen
@hoschiepeter: Du schreibst,
Zitat:

Das ganze wird unter Delphi 7 entwickelt.
Dann sollte man vieles noch mal überdenken und vereinfachen!
Es ist einfach mal 100Formulare zu machen, nur weil man ein paar unterschiedlich Eingaben benötigt, die man evtl auch mit 3-10 machen kann.

Gruss alfold


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