![]() |
TApplication für Komponente
Wie kann ich auf "Application.Terminated" und "Application.ProcessMessages" von einer Komponente aus zugreifen?
|
Re: TApplication für Komponente
Uses-Anweisung um Forms ergänzen?
|
Re: TApplication für Komponente
Warum? Wer Application.ProcessMessages in einer Komponente braucht hat die VCL nicht richtig verstanden.
|
Re: TApplication für Komponente
Zitat:
Mit Application.ProcessMessages kann man in teufels Küche kommen wenn man nicht aufpasst und sich "versehentlich" während Berechnungen das berechnende Objekt löschen. |
Re: TApplication für Komponente
Okay... ProcessMessages ist wirklich ungünstig ;) Dass kann dann der Nutzer machen. Oder ich lagere es in einen Thread aus.
Aber ich bräuchte noch terminated, weil ich eine Pseudo-Endlosschleife habe ... |
Re: TApplication für Komponente
Wieso? Wenn du die Arbeit in einen Thread auslagerst, dann beendest du den Thread natuerlich im Destruktor.
|
Re: TApplication für Komponente
Hab ich nicht klug gesagt ^^ ich meinte damit, die Threadlose möglichkeit ;)
|
Re: TApplication für Komponente
Zitat:
Mich würden Details ernsthaft interessieren. Danke, Christoph |
Re: TApplication für Komponente
Hallo Christoph,
Robert hat das sicher nicht so pauschal gemeint, wie er es geschrieben hat. Kernstück der Indy AntiFreeze Komponente ist beispielsweise Application.ProcessMessages und auch die VCL-Macher haben bei der Kapselung der IDAPI-Schnittstelle einen entsprechenden Herzschrittmacher eingebaut. Tatsache ist, dass man für sowas sehr gute Gründe haben und genau verstehen sollte, was man da tut. Normalerweise werden die Methoden einer Komponente so entworfen, dass sie in kürzest möglicher Zeit die Nachrichten des Dispatchers abarbeiten und die Kontrolle wieder zurückgeben. Freundliche Grüße |
Re: TApplication für Komponente
Die Gemeinheit bei Application.ProcessMessages ist das eben Messages verarbeitet werden. Die eine oder andere Komponente mag es ueberhaupt nicht wenn das passiert. Ltztlich werden alle Methoden/Events von anderen Methoden aufgerufen. Man kann da in garstige Rekursionen laufen. Zusatzlich kann es sehr lange dauern bis ProcessMessages abgearbeitet ist.
Man sollte also ProcessMessages meiden. Eine Komponente sollte passiv am Tropf der Messages haengen. Hintergrundarbeiten macht ein Thread. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz