Esta documentación está archivada y no tiene mantenimiento.

Process.CloseMainWindow (Método)

Actualización: noviembre 2007

Cierra un proceso que contiene una interfaz de usuario mediante el envío de un mensaje de cierre a su ventana principal.

Espacio de nombres:  System.Diagnostics
Ensamblado:  System (en System.dll)

public bool CloseMainWindow()
public boolean CloseMainWindow()
public function CloseMainWindow() : boolean

Valor devuelto

Tipo: System.Boolean
Es true si el mensaje de cierre se envió correctamente; es false si el proceso asociado no tiene una ventana principal o si la ventana principal está deshabilitada (por ejemplo, si se está mostrando un cuadro de diálogo modal).

ExcepciónCondición
PlatformNotSupportedException

La plataforma es Windows 98 o Windows Millennium (Windows Me); establezca el valor de la propiedad ProcessStartInfo.UseShellExecute en false para obtener acceso a esta propiedad en Windows 98 y Windows Me.

InvalidOperationException

El proceso ya ha terminado.

O bien

No hay ningún proceso asociado a este objeto Process.

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 comprobació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 Edition:

Esta propiedad no se encuentra disponible en esta plataforma si el proceso se ha iniciado con la propiedad ProcessStartInfo.UseShellExecute establecida en true.

En el siguiente ejemplo se inicia una instancia del Bloc de notas. A continuación, se recupera el uso de memoria física a intervalos de 2 segundos durante 10 segundos como máximo. También se detecta si el proceso termina antes de que transcurran 10 segundos. El proceso se cierra si se sigue ejecutando después de transcurrir 10 segundos.


using System;
using System.Diagnostics;
using System.Threading;

namespace Process_Sample
{
   class MyProcessClass
   {
      public static void Main()
      {
         try
         {
            Process myProcess;
            myProcess = Process.Start("Notepad.exe");
            // Display physical memory usage 5 times at intervals of 2 seconds.
            for (int i = 0;i < 5; i++)
            {
               if (!myProcess.HasExited)
               {
                   // Discard cached information about the process.
                   myProcess.Refresh();
                   // Print working set to console.
                   Console.WriteLine("Physical Memory Usage: " 
                                        + myProcess.WorkingSet.ToString());
                   // Wait 2 seconds.
                   Thread.Sleep(2000);
               }
               else {
                   break;
               } 
            }

            // Close process by sending a close message to its main window.
            myProcess.CloseMainWindow();
            // Free resources associated with process.
            myProcess.Close();

         }
         catch(Exception e)
         {
            Console.WriteLine("The following exception was raised: ");
            Console.WriteLine(e.Message);
         }
      }
   }
}


  • LinkDemand 

    para que haya plena confianza para el llamador inmediato. Este miembro no puede ser utilizado por código de confianza parcial.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0
Mostrar: