AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Hintergrundaktivität versus ausgelastet
Thema durchsuchen
Ansicht
Themen-Optionen

Hintergrundaktivität versus ausgelastet

Ein Thema von EWeiss · begonnen am 14. Mär 2017 · letzter Beitrag vom 15. Mär 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 17:20
Ich habe jetzt mal so ein Warte Objekt erstellt.
Das Problem ist nun das ich einen Timer verwende anstelle eines Threads.

Ok das kann man später noch ändern.
Was ich jetzt noch nicht berücksichtigt habe ist das dieses Objekt NUR dann angezeigt werden soll wenn die Anwendung ausgelastet ist.

Wie kann ich nun feststellen wann die Anwendung ausgelastet ist so das ich dann in dem Thread die Animation starten\beenden kann?

Im Moment habe ich das Teil in meiner SkinEngine implementiert bei bedarf sollte es aber nicht schwer sein diese in eine eigenständige DLL
zu implementieren so das man diese auch aus der VCL heraus starten kann.

Das Teil soll also später anstelle eines WaitCursor aktiv werden.

Shot ist angehängt.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:46 Uhr)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 17:59
Ähm...das dürfte nicht so ganz einfach sein, da das nicht nur von der Anwendung abhängt.

Wenn du das quasi als "Wait"-Cursor-Ersatz baust, würd ich einfach eine Start/Stop Methode
bauen. Der Programmierer (sprich in dem Fall der Nutzer) weiß am besten, wo in seiner Anwendung
kritische Aktionen ablaufen.

Ist ja letztlich beim Wait-Cursor auch nicht anders
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 18:05
Ähm...das dürfte nicht so ganz einfach sein, da das nicht nur von der Anwendung abhängt.

Wenn du das quasi als "Wait"-Cursor-Ersatz baust, würd ich einfach eine Start/Stop Methode
bauen. Der Programmierer (sprich in dem Fall der Nutzer) weiß am besten, wo in seiner Anwendung
kritische Aktionen ablaufen.

Ist ja letztlich beim Wait-Cursor auch nicht anders
Hmmm... Das ist schlecht.
Ich dachte das ich das mit einem Thread verknüpfen kann.

Wie macht man das denn mit den Splash Screens die solange laufen bis die Anwendung fertig mit dem laden ist..
Das ganze von Hand zu starten also an bestimmten Positionen im Code wollte ich eigentlich nicht.

Ein WaitCursor startet doch auch automatisch wenn die Anwendung ausgelastet ist oder nicht?

gruss
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#4

AW: Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 18:38
Wenn Du es von der CPU-Auslastung abhängig machen willst:
Delphi-Quellcode:
  private
    { Private-Deklarationen }
  Times: TThread.TSystemTimes;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  TThread.GetSystemTimes(Times);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position := TThread.GetCPUUsage(Times);
Application.ProcessMessages;
If ProgressBar1.Position>50 then...
end;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 19:12
Wäre eine Alternative
Muss mich aber erst nochmal schlau machen ob es nicht auf einen anderen weg geht. (ala WaitCursor)

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 19:41
Ist die Anwendung ausgelastet, dann hat sie auch keine Zeit ein Warte-Fenster/Objekt anzuzeigen.
Der Cursor und dessen Animation wird von Windows gesteuert und hängt nicht, wenn dein Programm hängt.

Ausgelastet = es arbeitet was und lässt der VCL keine Chance andere Messages zu verarbeiten.

Ausgelastet im Sinne von "Arbeitet sehr viel, aber lässt ab und an auch Messages durch" ... könnte man die CPU-Auslastung des Hauptthreads oder der ganzen Anwendung bestimmen
und jenachdem wie "stark" es hängt, könnte der Hauptthread eventuell doch die Anzeige des "Ich arbeite" übernehmen.

Hängt es aber komplett, also VCL/Progamm/MainThread:
Da könnte könnte man ein NonVCL-Fenster in einem Thread erstellen+anzeigen oder als "externe" EXE starten+anzeigen.
Ob die Anwendung hängt, kann man erkennen, indem man vom Thread aus regelmäßig dem MainThread eine Message schickt und schaut ob und wann sie zuletzt verarbeitet wurde.
$2B or not $2B

Geändert von himitsu (14. Mär 2017 um 19:45 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 19:52
Zitat:
Da könnte könnte man ein NonVCL-Fenster in einem Thread erstellen+anzeigen oder als "externe" EXE starten+anzeigen.
Das ist was ich vorhabe aber als DLL.
Bin mir aber noch nicht schlüssig wie ich das bewerkstelligen soll.

gruss
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

AW: Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 22:58
Ist das hier die Nachfolgediskussion zu meiner gestrigen Designanfrage, welcher Mauscursor wohl am besten Beschäftigung bei erhalten gebliebener gleichzeitiger Bedienbarkeit symbolisiert?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Hintergrundaktivität versus ausgelastet

  Alt 14. Mär 2017, 23:03
Ist das hier die Nachfolgediskussion zu meiner gestrigen Designanfrage, welcher Mauscursor wohl am besten Beschäftigung bei erhalten gebliebener gleichzeitiger Bedienbarkeit symbolisiert?
Nö..
Es geht wie du bestimmt schon gelesen hast um einen Ersatz für den WaitCursor.
Also anstelle dessen wird eine Animation abgespielt.

Und da dies nun mal abhängig von der Hintergrundaktivität sowie mit der Auslastung der Anwendung zu tun hat kam mir der Threadtitel gerade recht.
Er ist ja auch nicht gleich

Ich habe dafür aber nochmal einen extra Thread angelegt damit man das Testen kann
und ich die Archive bei bedarf austauschen kann.

gruss

Geändert von EWeiss (14. Mär 2017 um 23:13 Uhr)
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
555 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Hintergrundaktivität versus ausgelastet

  Alt 15. Mär 2017, 14:36
An sich hat es sich bewährt eine Message zu schicken ...

http://stackoverflow.com/questions/3...514209#3514209

Allein ein Beispiel ... zwar zum IE aber gut.


Geändert von MichaelT (15. Mär 2017 um 14:42 Uhr)
  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 03:30 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