Ícono del sitio Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Cómo acelerar las aplicaciones de escritorio remoto

remote desktop faster

Una actualización de funciones de RAD Studio 10.4.2, impulsada por un análisis que muestra un aumento en el número de desarrolladores que utilizan el escritorio remoto para el desarrollo durante Covid, ha sido una aceleración del renderizado IDE sobre Escritorio remoto.

Los principales problemas en los que se centraron fueron el bloqueo del IDE en algunas situaciones (como al conectar o desconectar el escritorio remoto), el parpadeo y algunos AV.

Los elementos de QP analizados para 10.4.2 incluyen:

Además, hubo una serie de informes internos.

Si bien no tengo un proyecto de muestra que se pueda compartir, tengo permiso para compartir algunas notas que el equipo de I + D de Embarcadero proporcionó en función de sus experiencias, y espero que esto también sea útil para otros desarrolladores.

La causa principal de todos esos problemas es que cualquier cambio de sesión de RDP (bloquear, desbloquear, conectar, desconectar) envió un cambio de configuración de todo el sistema (WM_SETTINGCHANGE) que provocó una cascada de mensajes que conduce a múltiples redibujos en el IDE. Esta fue la causa de algunos de los AV, ya que entre los mensajes en cascada enviados por el sistema operativo incluía el mensaje WM_THEMECHANGED que estaba activando la recreación del controlador para algunos controles. Esto estaba afectando a los diseñadores de VCL / FMX cuando se dejaron abiertos y se reconectó una sesión mediante RDP.

La API de WTS proporciona una forma de recibir las notificaciones de cambio de sesión de RDP (WM_WTSSESSION_CHANGE). La gestión de esto permite que el IDE sea notificado cuando la sesión está bloqueada, desbloqueada, conectada, desconectada, y desde aquí podemos elegir cómo se maneja WM_SETTINGCHANGE y evitar los problemas de parpadeo / repintado.

Una nota del equipo de I + D fue que el uso de estilos VCL en servicios de terminal es más probable que haga que una aplicación parpadee en circunstancias normales.

Se espera que esta muestra de código esqueleto (no probado) proporcione indicaciones en la dirección correcta para cualquiera que busque agregar un soporte similar en sus aplicaciones.

[crayon-674290bbbcb1c685283852/]
Salir de la versión móvil