Procesos de Session 0 y cuadros de diálogo

Este es un patrón que vemos con mucha frecuencia, procesos que se vuelven lentos o dejan de responder de forma inesperada.

Esto puede deberse a que estamos empleando cuadros de diálogo en un proceso de Session 0. Cuando un usuario se autentica en una máquina Windows, se crea un Session ID, empezando por el 1, quedando reservado el 0 para los servicios y procesos que ejecuta el sistema operativo.

Por lo que estos procesos no se ejecutan en un escritorio, no teniendo interacción directa con el usuario con ventanas. ¿Qué ocurre si añadimos una ventana a uno de estos procesos?, pues que no tendremos a un usuario que pueda interaccionar con ella, por lo que si la ventana está en espera a que el usuario haga click en algún botón, pero no tenemos usuario, el hilo que tiene esa petición quedará bloqueado esperando una respuesta que nunca llegará.

Ese es el motivo por el que no podemos tener cuadros de diálogo en una aplicación que está en la sesión 0, porque afecta al rendimiento de la aplicación pudiendo hacer que se llegue a bloquear el proceso.

 

Espero que os sirva de ayuda.

- José Ortega Gutiérrez