¿Por qué la ventana de la consola se cierra inmediatamente una vez que se muestra mi resultado?

Resuelto user962206 asked hace 12 años • 16 respuestas

Estoy estudiando C# siguiendo las guías de MSDN .

Ahora, acabo de probar el Ejemplo 1 ( aquí está el enlace a MSDN ) y encontré un problema: ¿por qué la ventana de la consola se cierra inmediatamente una vez que se muestra mi salida?

using System;

public class Hello1
{
    public static int Main()
    {
        Console.WriteLine("Hello, World!");
        return 0;
    }
}
user962206 avatar Jan 15 '12 15:01 user962206
Aceptado

El problema aquí es que su programa Hola Mundo aparece y se cerrará inmediatamente.
¿porqué es eso?

Porque se acabó. Cuando las aplicaciones de consola han completado su ejecución y regresan de su mainmétodo, la ventana de consola asociada se cierra automáticamente. Este es el comportamiento esperado.

Si desea mantenerla abierta para fines de depuración, deberá indicarle a la computadora que espere a que se presione una tecla antes de finalizar la aplicación y cerrar la ventana.

El Console.ReadLinemétodo es una forma de hacerlo. Agregar esta línea al final de su código (justo antes de la returndeclaración) hará que la aplicación espere a que presione una tecla antes de salir.

Alternativamente, puede iniciar la aplicación sin el depurador adjunto presionando Ctrl+ F5desde el entorno de Visual Studio, pero esto tiene la desventaja obvia de impedirle utilizar las funciones de depuración, que probablemente desee tener a su disposición al escribir una aplicación.

Probablemente, el mejor compromiso sea llamar al Console.ReadLinemétodo sólo al depurar la aplicación envolviéndola en una directiva de preprocesador. Algo como:

#if DEBUG
    Console.WriteLine("Press enter to close...");
    Console.ReadLine();
#endif

También es posible que desee que la ventana permanezca abierta si se produce una excepción no detectada. Para hacer eso puedes poner el Console.ReadLine();en un finallybloque:

#if DEBUG
    try
    {
        //...
    }
    finally
    {
        Console.WriteLine("Press enter to close...");
        Console.ReadLine();
    }
#endif
Cody Gray - on strike avatar Jan 15 '2012 08:01 Cody Gray - on strike

En lugar de usar

Console.Readline()
Console.Read()
Console.ReadKey()

puede ejecutar su programa usando Ctrl+ F5(si está en Visual Studio). Luego, Visual Studio mantendrá abierta la ventana de la consola hasta que presione una tecla.

Nota: No puede depurar su código con este enfoque.

Bhavik Patel avatar Sep 09 '2013 15:09 Bhavik Patel

Supongo que la razón por la que no desea que se cierre en el modo de depuración es porque desea ver los valores de las variables, etc. Por lo tanto, probablemente sea mejor simplemente insertar un punto de interrupción en el cierre "}" de la función principal. . Si no necesita depurar, Ctrl-F5 es la mejor opción.

Rob L avatar Feb 17 '2016 22:02 Rob L

Esto se comporta igual para CtrlF5o F5. Colóquelo inmediatamente antes del final del Mainmétodo.

using System.Diagnostics;

private static void Main(string[] args) {

  DoWork();
  
  if (Debugger.IsAttached) {
    Console.WriteLine("Press any key to continue . . .");
    Console.ReadKey();
  }
}
user3484993 avatar Mar 22 '2015 14:03 user3484993