Ich habe ein Formular mit einer TWebBrower
Komponente, die ein HTML-Dokument lädt. Die Daten auf dem HTML-Dokument wird alle paar Sekunden aktualisiert, manchmal mehrmals pro Sekunde und ich den Wert in Delphi aktualisieren mit:Optimieren Sie das Malen von TWebBrowser, um die CPU-Gesamtnutzung zu reduzieren
DOMDocument.getElementById(elementID).innerHTML := someValue;
Das Problem ist, ich das Fenster/Web-Browser sperren wollen, es zu verhindern, dass von der Malerei/Aktualisierung, bis alle meine Updates abgeschlossen sind. Gibt es eine Möglichkeit, dies zu tun? Wäre ein Anruf an
SendMessage(WebBrowser.Handle,WM_SETREDRAW,0,0);
Ich möchte etwas Hilfe bei der Optimierung dieses Codes, so dass meine gesamte CPU-Auslastung nicht kontinuierlich hoch ist.
'IViewObject'-Schnittstelle hat die' Freeze'- und 'UnFreeze'-Funktionen, die dafür nützlich sein können. Ich werde versuchen, ein Beispiel vorzubereiten. – TLama
Ich denke, wir müssen hier echten Code sehen (einschließlich der HTML). 'WM_SETREDRAW' funktioniert tatsächlich (in einem sehr begrenzten Test, den ich gemacht habe). aber da 'innerHTML' asynchron arbeitet, denke ich, dass es ein Problem wäre, es zu synchronisieren ... – kobik
@kobik, aber wenn du sagst, dass' innerHTML' asynchron ist, dann habe ich Angst, selbst 'IViewObject' hilft nicht. Es müsste eine Überprüfung für den Bereitschaftszustand sein. – TLama