Hi Luckie,
die App soll auf alle noch gängigen Windows-Systemen laufen, auch Win98 u. WinME.
Zu den Threads :
Die meisten laufen im Hintergrund mit normaler bzw. niedriger Priorität und sollen nur in Intervallen a 60 bzw. 75 Sek. einen Http-Request(auch mit
Indy) absetzen und anhand der Antwort
Gui-Elemente aktualisieren, was ich auch mit Syncronize mache.
Hier mal ein Beispiel wie dir meisten meiner Threads ablaufen ;
Code:
procedure TAdminListThread.Execute;
Var iWait : Longint;
begin
while not Terminated do begin
DoRequest;
//
iWait := 0;
// cIntervall ist in diesem Fall 75000
While (not Terminated) and (iWait < cIntervall) do begin
inc(iWait,500);
sleep(500);
end;
end;
end;
Was mich nur wundert bzw. ärgert :
Bis vor kurzem hatte ich eine Version die einwandfrei lief und auch unter extremer Belastung nur max. 20% der CPU ausgelastet hat.
Dann habe ich wirklich nur ein paar Kleinigkeiten geändert, so unrelevate Sachen das ich die Änderungen nicht mal mehr aufzählen kann
Ich glaube ich habe einen Intervall von 140000 Sek. auf 120000 Sek geändert, zwei Timer auf Formulare gesetzt, die ich nur dynamisch erzeuge und danach wieder freigebe.
Und zwei drei andere Kleinigkeiten die mir aber nicht mehr einfallen
Das schlimme ist das ich normalerweise bei jeder Version/Release bevor ich sie hoch lade und den usern zur verfügung stelle, einmal komplett den Quellcode mit Version sichere.
Das habe ich vor lauter Stress leider nicht getan, d.h. die letzte Version wo dieses Phänomen der CPU-Belastung nicht auftrat ist schon etwas älter
Bei der ganzen App geht es um eine Live-Bildübertragung mit eingebauten Chat(deshalb die 2 TWebbrowser instanzen)
Die hauptsächlichen Zeitkritischen Threads sind die beiden Bildübertragungsthreads :
1. Ein WebServer mit IdHttpServer
2. Ein normaler IdTcpServer
beide greifen das Bild einer Webcam/Videokamera syncronisiert vom Video-Treiber ab.
Dann gibt es noch zwei Timer die in Abständen von 100 ms folgendes tun :
Der eine schickt geschriebene Chat-Texte, die erst in einer Stringlist zwischengespeichert werden, zu den Clients.
Der andere Timer stellt die Erhaltenen Chat-Texte dar.
Er erstellt davor einen lokalen
HTML-File der dann vom TWebbrowser aufgerufen wird.
Hat irgentjemand eine Idee, durch welche Umstände plötzlich eine solch schlechte Performance verursacht werden könnte ?
Oder ist jemand im Decompilen und
asm so gut, das er mir die UNterschiede von meiner alten und neuen App nennen kann ?
Danke schonmal im vorraus für jede Hilfe, weiß gerade wirklich nicht weiter
Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.