我有一个WPF应用程序,当传递命令行参数时,它会作为命令行应用程序运行。为了显示/获取命令行窗口,我使用以下代码。
当我运行应用程序时,一切都按预期工作。如果我在应用程序中向控制台输出任何内容,则应用程序不会自动从控制台退出,我必须按“Enter”键或者调用某种
当我运行应用程序时,一切都按预期工作。如果我在应用程序中向控制台输出任何内容,则应用程序不会自动从控制台退出,我必须按“Enter”键或者调用某种
ReadLine
- 注意,我根本没有在我的应用程序中使用ReadLine
。实际上,我可以只使用这个简单的代码来使此行为发生。如何防止应用程序运行后需要“按Enter”?public static void Main(string[] args)
{
if (args.Length == 0)
{
App app = new App();
app.Run(new MainWindow());
}
else
{
// attach to an parent process console
if (!NativeMethods.AttachConsole(-1))
{
// allocate a new console
NativeMethods.AllocConsole();
}
Console.WriteLine("hey");
NativeMethods.FreeConsole();
}
}
我使用以下方法进行Alloc / Attach / Free操作。注意根据Rohit的建议,我尝试在WriteLine
后直接使用FreeConsole
,但仍然无效。
[DllImport("kernel32.dll")]
private static extern bool AllocConsole();
[DllImport("kernel32.dll")]
private static extern bool AttachConsole(int pid);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern int FreeConsole();