AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung
Thema durchsuchen
Ansicht
Themen-Optionen

D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

Ein Thema von stalkingwolf · begonnen am 26. Jan 2023 · letzter Beitrag vom 30. Jan 2023
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 26. Jan 2023, 13:14
ProcessExplorer als Admin starten - Rechtsklick auf den entsprechenden Prozess - Properties - Threads Tab und dort den Thread raussuchen, der die CPU verbrennt - selektieren und auf Stack klicken. Dort ruhig bisschen auf Refresh hämmern und beobachten, was da so auftaucht. Kann unter Umständen schon einen Hinweis geben.

Wenn remote debuggen auf den Rechner bei euch in der Firma möglich ist - über die IDE connecten und dann den entsprechenden Thread beobachten.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 26. Jan 2023, 13:31
Ich würde deine hängenden Projekte mal mit zum Beispiel Eurekalog laufen lassen. Das kann bei Hängern sehr helfen.
Delphi IDE Menu Projekt > Eurekalog Optionen unter "Features > Hang Detection" "gewünschte" Zeit einstellen.

Die Meldungsdialoge verhalten sich seit irgendwann XE nicht mehr genau so wie bei D6/7. Da musst du entweder deinen Code umbauen oder die Dialogfunktion so anpassen, dass sich deine App unter den neueren Delphis wie zu D6/7 Zeiten verhält. Sehr wahrscheinlich wird dies helfen:
Application.NormalizeTopMosts;
Application.RestoreTopMosts;

Zum Beispiel so:
Delphi-Quellcode:
function MessgeBoxDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin
  Application.NormalizeTopMosts;
  result := VCL.Dialogs.MessageDlg(Msg, DlgType, Buttons, HelpCtx);
  Application.RestoreTopMosts;
end;

Danke jaenicke für den Windows Detective Tipp - kannte ich nicht.
Michael Gasser

Geändert von Michael II (26. Jan 2023 um 14:18 Uhr)
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
549 Beiträge
 
#3

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 26. Jan 2023, 15:13
Delphi-Quellcode:
function MessgeBoxDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin
  Application.NormalizeTopMosts;
  result := VCL.Dialogs.MessageDlg(Msg, DlgType, Buttons, HelpCtx);
  Application.RestoreTopMosts;
end;
Das bringt leider nichts.

Generell frage ich mich
a) Warum nur das Programm und nicht die anderen 20 die wir portiert haben?
b) Warum nur auf einigen Rechnern?
  Mit Zitat antworten Zitat
Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 26. Jan 2023, 16:28
Das bringt leider nichts.

Generell frage ich mich
a) Warum nur das Programm und nicht die anderen 20 die wir portiert haben?
b) Warum nur auf einigen Rechnern?
Windowsmeldungen werden nicht überall gleich "nett" abgearbeitet . Ich hatte jetzt beim Wechsel auf D11 auch ein paar Probleme, welche leider nur auf einigen Maschinen auftraten und seit Delphi 2 nie. Und ich behaupte damit nicht, dass D11 das Problem ist.

Das mit den Meldungsfenstern hinter dem Hauptfenster. Falls die Meldungsfenster nach dem Restore der App hinten landen: Falls in diesem Fall NormalizeTopMosts; RestoreTopMosts; nix bringt: Ich habe eine (funktionierende) Bastellösung: Via Application.Components durch alle Forms wühlen und jene mit StayOnTop und dann noch jene mit Classname TMessageForm nach vorn bringen. Aber ich poste das hier nicht, da sicher jemand dann mit einem Einzeiler kontert, welcher das Problem auch und wesentlich schöner löst .

Und das mit dem "Hänger". Hast du nun mal mit Eurekalog gecheckt, was aufgezeichnet worden ist?
Michael Gasser
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
549 Beiträge
 
#5

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 26. Jan 2023, 16:39
[QUOTE=Michael II;1517902]
Und das mit dem "Hänger". Hast du nun mal mit Eurekalog gecheckt, was aufgezeichnet worden ist?
ich habe die Einstellung nicht gefunden.

Ich habe das Programm nun komplett zusammengestrichen. Sind nur noch 5 von 30 Units und immer noch das gleiche.

Auch bei dem Dialog im Hintergrund. Ich hole diesen nach vorne. klicke den Dialog weg. Programm läuft auf 25% und bekomme es nicht beendet.
Minimiere es, maximiere es wieder und kann es danach beenden.

Dann tritt aber ein Fehler auf. laut AQTime irgendwo in der Kernel32.dll bei AddClipboardFormatListener(). Das nutzen wir selber nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#6

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 26. Jan 2023, 16:53
Es wurden viele stellen verändert.
Das OldCreateOrder wurde in Delphi 11 oder 10 abgeschafft.

ganz früher war OnCreate im Constructor,
später im AfterConstruct, aber beim Upgrade alter Forms wurde OldCreateOrder=True gespeichert und wenn es True ist, dann doch im Contructor
und jetzt ist es immer AfterConstruct ... also alte Forms, wo es "bisher noch ging, aber der Entwickler seit 15 Jahren vergessen hat das entlich mal zu bereinigen", da kann es jetzt knallen.


Und dann auch am PopupPatent
oder sonstwo
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
549 Beiträge
 
#7

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 27. Jan 2023, 07:57
Es wurden viele stellen verändert.
Das OldCreateOrder wurde in Delphi 11 oder 10 abgeschafft.
danach habe ich einmal gesucht und in keinem unserer Projekte ist es auf True.
  Mit Zitat antworten Zitat
Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 26. Jan 2023, 20:00
[QUOTE=stalkingwolf;1517904][QUOTE=Michael II;1517902]
Und das mit dem "Hänger". Hast du nun mal mit Eurekalog gecheckt, was aufgezeichnet worden ist?
ich habe die Einstellung nicht gefunden.

Die Einstellung findest du natürlich erst, nachdem du Eurekalog installierst hast.
Michael Gasser
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
549 Beiträge
 
#9

AW: D11 : Programm hängt zieht 25% CPU bei UI Aktualisierung

  Alt 27. Jan 2023, 07:38
[QUOTE=Michael II;1517910][QUOTE=stalkingwolf;1517904]
Und das mit dem "Hänger". Hast du nun mal mit Eurekalog gecheckt, was aufgezeichnet worden ist?
ich habe die Einstellung nicht gefunden.

Die Einstellung findest du natürlich erst, nachdem du Eurekalog installierst hast.
das erklärt es
Ich hab es eingebunden und aktiv.

Nun erhalte ich im Programm die Meldung "Datenbank ist nicht zugewiesen." Mit der Option das Programm zu beenden und mir eine Meldung anzuzeigen.
Bei allem hängt danach das Programm komplett und nichts passiert mehr.
  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 15:26 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