2012-11-06 166 views
2

我试图在C#中构建的visual studio中打开控制台应用程序。只要我打开它,它立即关闭。控制台应用程序在Visual Studio中打开后立即关闭

我知道windows设置这是一个安全默认值(至少我认为)。我该如何解决?

我知道我可以编译它并创建一个快捷方式并修改目标,使其在应用程序位置之前具有命令提示符的位置。虽然创建这个的程序员已经将信息生成到visual studio的输出中,但是我必须在那里打开它。

它发生与大多数应用程序,而不只是在Visual Studio中,只是在这种情况下,我需要它在VS 2010中打开我使用Windows 7

回答

10

这是一个古老的问题,激发了几个有趣的卡通:

enter image description here

让我们来解决它。当您从桌面,Windows资源管理器或Visual Studio上的快捷方式启动控制台应用程序时,您想要执行的操作是提示用户按任意键。但不是从运行自己的控制台的命令处理器开始的。您可以通过一个小小的调整来确定流程是否为控制台窗口的唯一拥有者,如下所示:

using System; 

class Program { 
    static void Main(string[] args) { 
     Console.WriteLine("Working on it..."); 
     //... 
     Console.WriteLine("Done"); 
     PressAnyKey(); 
    } 

    private static void PressAnyKey() { 
     if (GetConsoleProcessList(new int[2], 2) <= 1) { 
      Console.Write("Press any key to continue"); 
      Console.ReadKey(); 
     } 
    } 

    [System.Runtime.InteropServices.DllImport("kernel32.dll")] 
    private static extern int GetConsoleProcessList(int[] buffer, int size); 
} 
+0

你为什么要删除编辑? –

+1

因为这是做错的方法。 –

+0

如果所有人都想要的是在VS运行结束时暂停的快捷方式。对于小型实用程序或测试代码,与记住'Debugger.IsAttached'相比,pinvoke可能更麻烦。 –

3

尝试主要的末尾添加Console.ReadKey();()方法。这是一种快速而肮脏的方法来阻止窗户自动关闭。

2

您需要等待用户输入。使用Console.ReadLine(),Console.Read()Console.ReadKey()

5

您也可以通过按(Ctrl + F5)来运行应用程序。这将允许它以'Release'模式运行,并且默认情况下,您需要按'return'关闭窗口。

+1

这是问题要求正确的答案。 –

相关问题