Exportar (0) Imprimir
Expandir todo
Expandir Minimizar

Process.ExitCode (Propiedad)

Actualización: noviembre 2007

Obtiene el valor especificado por el proceso asociado al terminar.

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

[BrowsableAttribute(false)]
public int ExitCode { get; }
/** @property */
/** @attribute BrowsableAttribute(false) */
public int get_ExitCode()

public function get ExitCode () : int

Valor de propiedad

Tipo: System.Int32
Código especificado por el proceso asociado al terminar.

ExcepciónCondición
InvalidOperationException

El proceso no ha terminado.

O bien

La propiedad Handle del proceso no es válida.

NotSupportedException

Se está intentando obtener acceso a la propiedad ExitCode de un proceso que se está ejecutando en un equipo remoto. Esta propiedad sólo está disponible para los procesos que se ejecutan en el equipo local.

Utilice la propiedad ExitCode para obtener el estado devuelto por el proceso del sistema al terminar. Puede utilizar el código de salida del mismo modo que se utiliza un valor entero devuelto desde un procedimiento main().

El valor de la propiedad ExitCode de un proceso refleja la convención específica implementada por el desarrollador para ese proceso. Si utiliza el valor del código de salida para tomar decisiones en el código, asegúrese de conocer la convención utilizada por el proceso de la aplicación.

Por lo general, los programadores indican que la salida es correcta dándole un valor cero a la propiedad ExitCode e indican que se han producido errores mediante valores distintos de cero que el método que realiza la llamada puede utilizar para identificar la causa de una terminación anómala del proceso. No es obligatorio seguir estas directrices, pero constituyen la convención.

Si intenta obtener la propiedad ExitCode antes de que el proceso haya terminado, se produce una excepción. Examine primero la propiedad HasExited para comprobar que el proceso asociado haya finalizado.

Puede utilizar CloseMainWindow o el método Kill para hacer que un proceso asociado termine.

La notificación de que el proceso ha terminado puede ser de dos formas: sincrónica y asincrónica. La notificación sincrónica se basa en una llamada al método WaitForExit para detener el procesamiento de la aplicación hasta que el componente asociado haya terminado. La notificación asincrónica se basa en el evento Exited. En cualquier caso, la propiedad EnableRaisingEvents debe establecerse en true para que el componente Process reciba la notificación de que el proceso ha terminado.

En el siguiente ejemplo se inicia una instancia del Bloc de notas. A continuación, se recuperan y se muestran diversas propiedades del proceso asociado. También se detecta cuándo termina el proceso y se muestra el código de salida del proceso.

using System;
using System.Diagnostics;

namespace ProcessSample
{
    class ProcessMonitorSample
    {
        public static void Main()
        {

            // Define variables to track the peak
            // memory usage of the process.
            long peakPagedMem = 0, 
                peakWorkingSet = 0, 
                peakVirtualMem = 0;

            Process myProcess = null;

            try 
            {
                // Start the process.
                myProcess = Process.Start("NotePad.exe");

                // Display the process statistics until
                // the user closes the program.
                do 
                {
                    if (!myProcess.HasExited)
                    {
                        // Refresh the current process property values.
                        myProcess.Refresh();

                        Console.WriteLine();

                        // Display current process statistics.

                        Console.WriteLine("{0} -", myProcess.ToString());
                        Console.WriteLine("-------------------------------------");

                        Console.WriteLine("  physical memory usage: {0}",
                            myProcess.WorkingSet64);
                        Console.WriteLine("  base priority: {0}",
                            myProcess.BasePriority);
                        Console.WriteLine("  priority class: {0}",
                            myProcess.PriorityClass);
                        Console.WriteLine("  user processor time: {0}",
                            myProcess.UserProcessorTime);
                        Console.WriteLine("  privileged processor time: {0}",
                            myProcess.PrivilegedProcessorTime);
                        Console.WriteLine("  total processor time: {0}",
                            myProcess.TotalProcessorTime);

                        // Update the values for the overall peak memory statistics.
                        peakPagedMem = myProcess.PeakPagedMemorySize64;
                        peakVirtualMem = myProcess.PeakVirtualMemorySize64;
                        peakWorkingSet = myProcess.PeakWorkingSet64;

                        if (myProcess.Responding)
                        {
                            Console.WriteLine("Status = Running");
                        }
                        else
                        {
                            Console.WriteLine("Status = Not Responding");
                        }
                    }
                }
                while (!myProcess.WaitForExit(1000));


                Console.WriteLine();
                Console.WriteLine("Process exit code: {0}", 
                    myProcess.ExitCode);

                // Display peak memory statistics for the process.
                Console.WriteLine("Peak physical memory usage of the process: {0}",
                    peakWorkingSet);
                Console.WriteLine("Peak paged memory usage of the process: {0}",
                    peakPagedMem);
                Console.WriteLine("Peak virtual memory usage of the process: {0}",
                    peakVirtualMem);

            } 
            finally
            {
                if (myProcess != null)
                {
                    myProcess.Close();
                }
            }
        }

    }
}


  • 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

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft