Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

Process.ExitCode (Propiedad)

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; }

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.

NotaNota

Cuando la salida estándar se haya redirigido a los controladores de eventos asincrónicos, puede ocurrir que el procesamiento de salida no se haya completado cuando HasExited devuelva un resultado true. Para asegurarse de que se ha completado el control de eventos asincrónico, llame a la sobrecarga WaitForExit() que no toma ningún parámetro antes de comprobar HasExited.

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. Al utilizar la notificación asincrónica, EnableRaisingEvents se debe establecer en true para que el componente Process reciba notificación de que el proceso ha salido.

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);
                        Console.WriteLine("  PagedSystemMemorySize64: {0}",
                            myProcess.PagedSystemMemorySize64);
                        Console.WriteLine("  PagedMemorySize64: {0}",
                           myProcess.PagedMemorySize64);

                        // 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();
                }
            }
        }

    }
}


.NET Framework

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

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

  • LinkDemand 

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

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

date

Historial

Motivo

Junio de 2010

Corregida la información sobre cuándo utilizar EnableRaisingEvents.

Comentarios de los clientes.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft