我正在尝试在使用C#构建的visual studio中打开一个控制台应用程序。我打开它后立即关闭。
我知道Windows设置这是一个安全默认设置(至少我认为)。我该如何解决?
我知道我可以编译它并创建一个快捷方式并修改目标,使其在应用程序位置之前具有命令提示符的位置。虽然创建它的程序员可以在visual studio的输出中生成信息,但是我必须在那里打开它。
大多数应用程序都会出现这种情况,而不仅仅是在visual studio中,只是在这种情况下我需要在VS 2010中打开它。我使用的是Windows 7。
答案 0 :(得分:14)
这是一个古老的问题,并激发了几个有趣的漫画:
让我们解决它。当您从桌面,Windows资源管理器或Visual Studio上的快捷方式启动控制台应用程序时,您要做的是提示用户按任意键。但不是从命令处理器运行自己的控制台启动时。您可以使用一点pinvoke来执行此操作,您可以查看该进程是否是控制台窗口的唯一所有者,如下所示:
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);
}
答案 1 :(得分:7)
您也可以按(Ctrl + F5)运行应用程序..这将允许它以“释放”模式运行,默认情况下,您需要按“返回”关闭窗口。
答案 2 :(得分:3)
尝试在Main()方法的末尾添加Console.ReadKey();
。这是一种快速而肮脏的方法,可以阻止窗口自行关闭。
答案 3 :(得分:2)
您需要等待用户输入。使用Console.ReadLine()
,Console.Read()
或Console.ReadKey()
。
答案 4 :(得分:0)
因此,根据here
如果您的进程是控制台上唯一的进程,则 当您的进程退出时,控制台将被销毁。如果还有其他 进程附加到控制台,然后控制台将继续 存在(因为您的程序不会是最后一个)。
如果我们使代码适应C#,您将最终得到如下结果:
_scaffoldKey.currentState.removeCurrentSnackBar();**<--this close previous already open snackbar-->**
_scaffoldKey.currentState.showSnackBar( **<--this open new same time-->**
SnackBar(
content: Text('Processing Data'),
),
);