Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Environment.ExitCode (Propiedad)

Obtiene o establece el código de salida del proceso.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)
public static int ExitCode { get; set; }

Valor de propiedad

Tipo: System.Int32
Un entero de 32 bits con signo que contiene el código de salida. El valor predeterminado es 0 (cero), lo que indica que el proceso se completó correctamente.

Si el método Main devuelve void, puede utilizar esta propiedad para establecer el código de salida que se devolverá al entorno del que procede la llamada. Si Main no devuelve void, no se tiene en cuenta esta propiedad. El valor inicial de esta propiedad es cero.

Nota de precauciónPrecaución

La propiedad de ExitCode es un entero de 32 bits con signo. Para evitar que la propiedad devuelve un código de salida negativo, no debe utilizar valores mayor o igual que 0x80000000.

Utilice un número distinto de cero para indicar un error. En la aplicación, puede definir dispone de códigos de error de una enumeración, y devuelve el código de error adecuado según el escenario. Por ejemplo, devuelve un valor de 1 para indicar que el archivo necesario no está presente y el valor 2 indica que el archivo está en formato incorrecto. Para obtener una lista de códigos de salida utilizados por el sistema operativo Windows, vea Códigos de error del sistema en la documentación de Windows.

A continuación se muestra una aplicación sencilla denominada Double.exe que duplique un valor entero que se pasa a ella como argumento de la línea de comandos. El valor asignado códigos de error a la propiedad de ExitCode para indicar las condiciones de error. Observe que debe agregar una referencia al ensamblado de System.Numerics.dll para compilar correctamente el ejemplo.


using System;
using System.Numerics;

public class Example
{
   private const int ERROR_BAD_ARGUMENTS = 0xA0;
   private const int ERROR_ARITHMETIC_OVERFLOW = 0x216;
   private const int ERROR_INVALID_COMMAND_LINE = 0x667;

   public static void Main()
   {
      string[] args = Environment.GetCommandLineArgs();
      if (args.Length == 1) {
         Environment.ExitCode = ERROR_INVALID_COMMAND_LINE;  
      }
      else {
         BigInteger value = 0;
         if (BigInteger.TryParse(args[1], out value))
            if (value <= Int32.MinValue || value >= Int32.MaxValue)
               Environment.ExitCode = ERROR_ARITHMETIC_OVERFLOW;
            else
               Console.WriteLine("Result: {0}", value * 2);

         else
            Environment.ExitCode = ERROR_BAD_ARGUMENTS;
      }
   }
}


El ejemplo se puede llamar a desde un archivo por lotes como la siguiente, que hace que los códigos de error accesibles mediante el comando de ERRORLEVEL .


echo off
Double.exe %1
If errorlevel 1639 goto NoArg 
if errorlevel 534 goto Overflow
if errorlevel 160 goto BadArg
if errorlevel 0 echo Completed Successfully 
goto :EOF

:NoArg
echo Missing argument
goto :EOF

: Overflow
echo Arithmetic overflow
goto :EOF

:BadArg
echo Invalid argument
goto :EOF

A continuación se muestra una cierta resultados de ejemplo generados invocando el archivo por lotes.


>123 getdouble

>generación de repetición desactivado
Resultado: 246
Completado correctamente

>5912323109093 getdouble

>generación de repetición desactivado
Desbordamiento aritmético

>getdouble

>generación de repetición desactivado
Argumento que falta

>getdouble “cadena”

>generación de repetición desactivado
Argumento no válido

Observe que el código para Double.exe es idéntico en función al ejemplo siguiente, salvo que el anterior define un punto de entrada denominado Main sin valor devuelto, mientras que en este ejemplo se define un punto de entrada denominado Main que devuelva un entero.


using System;
using System.Numerics;

public class Example
{
   private const int ERROR_SUCCESS = 0;
   private const int ERROR_BAD_ARGUMENTS = 0xA0;
   private const int ERROR_ARITHMETIC_OVERFLOW = 0x216;
   private const int ERROR_INVALID_COMMAND_LINE = 0x667;

   public static int Main()
   {
      string[] args = Environment.GetCommandLineArgs();
      if (args.Length == 1) {
         return ERROR_INVALID_COMMAND_LINE;  
      }
      else {
         BigInteger value = 0;
         if (BigInteger.TryParse(args[1], out value))
            if (value <= Int32.MinValue || value >= Int32.MaxValue)
               return ERROR_ARITHMETIC_OVERFLOW;
            else
               Console.WriteLine("Result: {0}", value * 2);

         else
            return ERROR_BAD_ARGUMENTS;
      }
      return ERROR_SUCCESS;
   }
}


.NET Framework

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

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.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.
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.