Ein Feature-Update für RAD Studio 10.4.2, das auf einer Analyse basiert, die zeigt, dass die Anzahl der Entwickler, die Remotedesktop für die Entwicklung während Covid verwenden, gestiegen ist, war eine Beschleunigung des IDE-Renderings über Remotedesktop.
Die Hauptprobleme waren das Einfrieren der IDE in bestimmten Situationen (z. B. beim Verbinden oder Trennen des Remotedesktops), das Flackern und einige AV-Geräte.
Die für 10.4.2 betrachteten QP-Elemente umfassen:
- Verbinden Sie eine vorhandene RDP-Sitzung erneut mit denselben Bildschirmeinstellungen (demselben Computer) RS-99048
- Verbinden Sie eine vorhandene RDP-Sitzung erneut mit verschiedenen Bildschirmeinstellungen (z. B. von einem anderen Computer) RS-103339
- Das erneute Verbinden einer vorhandenen RDP-Sitzung mit geöffnetem FMX-Designer führt zu AV.
Darüber hinaus gab es eine Reihe interner Berichte.
Ich habe zwar kein Beispielprojekt, das geteilt werden kann, aber ich habe die Erlaubnis, einige Notizen zu teilen, die das Forschungs- und Entwicklungsteam von Embarcadero aufgrund ihrer Erfahrungen zur Verfügung gestellt hat, und ich hoffe, dass dies auch anderen Entwicklern nützlich sein wird.
Die Hauptursache für all diese Probleme ist, dass jede Änderung der RDP-Sitzung (Sperren, Entsperren, Verbinden, Trennen) eine systemweite Einstellungsänderung (WM_SETTINGCHANGE) gesendet hat, die eine Nachrichtenkaskade verursacht, die zu mehreren Neuzeichnungen in der IDE führt. Dies war die Ursache für einige AVs, da zwischen den vom Betriebssystem gesendeten Kaskadennachrichten die Nachricht WM_THEMECHANGED enthalten war, die bei einigen Steuerelementen die Neuerstellung des Handles auslöste. Dies wirkte sich auf die VCL / FMX-Designer aus, als sie offen gelassen wurden und eine Sitzung über RDP erneut verbunden wurde.
Die WTS-API bietet eine Möglichkeit, Benachrichtigungen über RDP-Sitzungsänderungen (WM_WTSSESSION_CHANGE) zu erhalten. Wenn Sie dies verwalten, wird die IDE benachrichtigt, wenn die Sitzung gesperrt, entsperrt, verbunden oder getrennt wird. Von hier aus können Sie auswählen, wie mit WM_SETTINGCHANGE umgegangen werden soll, und Probleme mit dem Flackern / Neulackieren vermeiden.
Ein Hinweis des Forschungs- und Entwicklungsteams war, dass die Verwendung von VCL-Stilen für Terminaldienste unter normalen Umständen eher dazu führt, dass eine Anwendung flackert.
Dieses Skelett-Codebeispiel (ungetestet) sollte hoffentlich Hinweise in die richtige Richtung für alle liefern, die ihren Anwendungen ähnliche Unterstützung hinzufügen möchten.
[crayon-6768ea06ef900889764320/]