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

Propiedad Process.HasExited

 

Obtiene un valor que indica si el proceso asociado finalizó.

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

[BrowsableAttribute(false)]
public bool HasExited { get; }

Valor de propiedad

Type: System.Boolean

Es true si el proceso del sistema operativo al que hace referencia el componente Process terminó; de lo contrario, es false.

Exception Condition
InvalidOperationException

No hay ningún proceso asociado al objeto.

Win32Exception

No se pudo recuperar el código de salida para el proceso.

NotSupportedException

Está intentando obtener acceso a la propiedad HasExited de un proceso que se ejecuta en un equipo remoto. Esta propiedad está disponible únicamente para los procesos que se ejecutan en el equipo local.

Un valor de true para HasExited indica que el proceso asociado ha finalizado normalmente o de forma anómala. Puede solicitar o forzar el proceso asociado termine llamando a CloseMainWindow o Kill. Si un identificador está abierto para el proceso, el sistema operativo libera la memoria de proceso cuando el proceso se ha cerrado, pero conserva la información administrativa sobre el proceso, como el identificador, el código de salida y la hora de salida. Para obtener esta información, puede usar el ExitCode y ExitTime Propiedades. Estas propiedades se rellenan automáticamente para los procesos iniciados por este componente. La información administrativa se libera cuando todos los Process componentes que están asociados con el proceso del sistema se destruyen y contener identificadores para el proceso terminado.

Un proceso puede terminar independientemente del código. Si se inició el proceso utilizando este componente, el sistema actualiza el valor de HasExited automáticamente, incluso si el proceso asociado se cierre independientemente.

System_CAPS_noteNota

Cuando se ha redirigido la salida estándar para controladores de eventos asincrónicos, es posible que el procesamiento de salida no se habrá completado cuando esta propiedad devuelve true. Para asegurarse de que se ha completado el control de eventos asincrónico, llame a la WaitForExit() sobrecarga que no toma ningún parámetro antes de comprobar HasExited.

En el ejemplo siguiente se inicia una instancia del Bloc de notas. A continuación, se recupera el uso de memoria física del proceso asociado cada 2 segundos para un máximo de 10 segundos. En el ejemplo se detecta si el proceso termina antes de que transcurran 10 segundos. En el ejemplo se cierra el proceso si sigue ejecutándose después de 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

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: