Autor Beitrag
AScomp
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Do 05.06.08 10:36 
Hallo zusammen,

derzeit plagt mich ein sehr seltsames Timer-Problem: meine Anwendungen laufen ständig im Hintergrund. Sobald man den Netzstecker eines Notebooks (OS: Vista) zieht, werden alle Comboboxes (egal ob von FlatStyle oder original VCL) geleert und sind nicht mehr anklickbar. Zudem hat das Anklicken von Popupmenü-Items keinerlei Effekt mehr.

Versuche ich im Sourcecode die Comboboxes wieder zu füllen, erhalte ich eine EOutOfRessources-Exception ("Zeile kann nicht eingefügt werden."). Da ich erst auf ein Timer-Problem geschlossen habe ("Nicht genügend Timer verfügbar."), habe ich z.B. bei den Flatstyles einen eigenen Threadtimer eingebaut. Die übrigen Flatstyle-Komponenten arbeiten jetzt auch fehlerfrei, aber die oben genannten Effekte bleiben.

Hat jemand irgendeine Idee, was das sein könnte und vorallem wie es zu beheben ist?

Meine Vermutung ist, dass intern in den Popupmenüs (egal ob TPopupMenu oder TPopupActionBar) und in Comboboxes wieder normale TTimer verwendet werden, was aus irgendeinem Grund im Energiesparmodus für Probleme sorgt.

Delphi 2007, Windows Vista
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 05.06.08 10:42 
Kannst du das Problem auch bei einem Minimal-Projekt reproduzieren? Du schreibst was von Threads - könnte es sein, dass da nicht synchronisierte VCL-Zugriffe das eigentliche Problem sind?

_________________
We are, we were and will not be.
AScomp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Do 05.06.08 10:45 
Hallo Daniel,

mit dem ThreadTimer sollte es nichts zu tun haben - den habe ich ja erst eingesetzt, nachdem die Probleme auch bei anderen Flatstyle-Objekten aufgetreten sind. Diese Probleme konnte ich mit dem ThreadTimer alle beheben.

Minimal-Projekt: Versuche ich gerade nachzustellen.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 05.06.08 10:50 
Ich meinte auch nicht speziell die ThreadTimer, sondern generell Zugriffe auf Objekte der VCL von einem anderen Thread aus - das kann sofort knallen, oder sich durch solche komischen Sachen bemerkbar machen. Bitmaps in Threads sind z.B. auch mit Vorsicht zu genießen.

_________________
We are, we were and will not be.
AScomp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Do 05.06.08 10:57 
Ich selbst habe komplett auf Threads verzichtet. Wie intern einige verwendete Komponenten arbeiten, kann ich nicht beurteilen. Da liegen mir nicht zu allen die Sources vor.

Noch irgendwelche Ideen? Ich habe das Gefühl, seit Tagen im Dunkeln zu tappen... :(

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Nach sieben Tagen die Erlösung: Fehler gefunden!

Zur Info: Das Programm wurde unter Vista in die Aufgabenplanung zum Starten beim Systemboot eingetragen. Dort gibt es das Flag "Beenden bei Battery-Mode". Die war aktiv, und obwohl die Software weiterlief, wurde ihr anscheinend ziemlich viel Speicher entzogen. :twisted:

Vista und seine Besonderheiten... :D