Cuando un proceso se está ejecutando, el bucle de mensajes se encuentra en estado de espera. El bucle de mensajes se ejecuta cada vez que el sistema operativo envía un mensaje de Windows al proceso. Cuando se llama a CloseMainWindow, se envía una solicitud para cerrar a la ventana principal que, en una aplicación con formato correcto, cierra las ventanas secundarias y revoca todos los bucles de mensajes en ejecución de la aplicación. Una solicitud de cierre del proceso mediante una llamada a CloseMainWindow no obliga a la aplicación a cerrarse. La aplicación puede pedir la confirmación del usuario antes de finalizar, o evitar su finalización. Para hacer que la aplicación se cierre, hay que utilizar el método Kill. El comportamiento de CloseMainWindow es igual al que se observa cuando el usuario cierra la ventana principal de una aplicación a través del menú del sistema. Por tanto, el hecho de solicitar la salida del proceso cerrando la ventana principal no obliga a la aplicación a salir inmediatamente.
Los datos modificados por el proceso o los recursos asignados al proceso pueden perderse si se llama al método Kill. Kill provoca una terminación anómala del proceso y sólo debe utilizarse cuando sea necesario. CloseMainWindow permite que el proceso termine de forma ordenada y cierra todas las ventanas, por lo que es preferible utilizarlo en el caso de las aplicaciones que disponen de una interfaz. Si CloseMainWindow produce un error, se puede utilizar Kill para terminar el proceso. El uso del método Kill constituye la única forma de terminar los procesos que no tienen interfaces gráficas.
Sólo es posible llamar a los métodos Kill y CloseMainWindow en el caso de aquellos procesos que se ejecuten en el equipo local. No se puede imponer la salida de los procesos que se ejecutan en equipos remotos. Sólo se puede ver la información relacionada con los procesos que se ejecutan en equipos remotos.
Nota de la plataforma Windows 98, Windows Millennium:
Esta propiedad no se encuentra disponible en esta plataforma si el proceso se ha iniciado con la propiedad ProcessStartInfo.UseShellExecute establecida en true.