Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Process.CloseMainWindow ()

 

Publicado: octubre de 2016

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()

Valor devuelto

Type: 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).

Exception Condition
PlatformNotSupportedException

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

InvalidOperationException

El proceso ya se cerró.

-o-

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

When a process is executing, its message loop is in a wait state. The message loop executes every time a Windows message is sent to the process by the operating system. Calling M:System.Diagnostics.Process.CloseMainWindow sends a request to close to the main window, which, in a well-formed application, closes child windows and revokes all running message loops for the application. The request to exit the process by calling M:System.Diagnostics.Process.CloseMainWindow does not force the application to quit. The application can ask for user verification before quitting, or it can refuse to quit. To force the application to quit, use the M:System.Diagnostics.Process.Kill method. The behavior of M:System.Diagnostics.Process.CloseMainWindow is identical to that of a user closing an application's main window using the system menu. Therefore, the request to exit the process by closing the main window does not force the application to quit immediately.

Data edited by the process or resources allocated to the process can be lost if you call M:System.Diagnostics.Process.Kill. M:System.Diagnostics.Process.Kill causes an abnormal process termination, and should be used only when necessary. M:System.Diagnostics.Process.CloseMainWindow enables an orderly termination of the process and closes all windows, so it is preferable for applications with an interface. If M:System.Diagnostics.Process.CloseMainWindow fails, you can use M:System.Diagnostics.Process.Kill to terminate the process. M:System.Diagnostics.Process.Kill is the only way to terminate processes that do not have graphical interfaces.

You can call M:System.Diagnostics.Process.Kill and M:System.Diagnostics.Process.CloseMainWindow only for processes that are running on the local computer. You cannot cause processes on remote computers to exit. You can only view information for processes running on remote computers.

Win98WinMe

This property is not available on this platform if you started the process with P:System.Diagnostics.ProcessStartInfo.UseShellExecute set to true.

The following example starts an instance of Notepad. It then retrieves the physical memory usage of the associated process at 2 second intervals for a maximum of 10 seconds. The example detects whether the process exits before 10 seconds have elapsed. The example closes the process if it is still running after 10 seconds.


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

for full trust for the immediate caller. This member cannot be used by partially trusted code.

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: