c# - WPF 控制台应用程序在完成后不会返回提示

标签 c# wpf command-line

我有一个 WPF 应用程序,当传递命令行参数时,它作为命令行应用程序运行。要显示/获取命令行窗口,我使用以下代码。

当我运行该应用程序时,一切都按预期进行。如果我在应用程序期间向控制台写入任何内容,那么该应用程序不会自动从控制台退出,我必须按“enter”或基本上调用某种ReadLine - 注意我没有使用ReadLine 在我的应用程序中。事实上,我只能使用这个简单的代码来实现这种行为。如何在应用程序运行后阻止“按回车键”的要求?

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();

最佳答案

模式主窗口完成后,使用类似于以下的代码清理所有应用程序资源:

    [STAThread()]
    internal static void Main()
    {
        // [Your startup code here]

        Application app = new Application();
        app.DispatcherUnhandledException += DispatcherUnhandledException;
        app.MainWindow = new MainWindow();
        app.MainWindow.ShowDialog();

        Console.WriteLine("Terminating...");
        Startup.FreeConsole();

        // http://msdn.microsoft.com/en-us/library/ms597014(v=vs.110).aspx
        app.Shutdown(0);      // <-- or Application.Current.Shutdown(0);

        // http://msdn.microsoft.com/en-us/library/system.environment.exit.aspx
        Environment.Exit(0);  // <-- a bit redundant however
    }

关于c# - WPF 控制台应用程序在完成后不会返回提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22988611/

相关文章:

c# - 使用从 SQL Server CE 表中获取的值填充组合框

c# - 无法访问我的扩展方法

c# - 如何在 WPF 中调整 Canvas 的大小?

wpf - 将 DynamicResource 绑定(bind)到 BasedOn 样式

c++ - macOS 命令行编译 g++ OpenGL ES .cpp 文件

c# - 如何在 C# 中为 Gecko Browes 设置 Outhtml

c# - 自定义 xmlWriter 跳过某个元素?

c# - 具有数据绑定(bind)和常量字符串的 WPF 窗口标题

linux - 如何将所有文件而不是目录移动到文件夹中

linux - RTMP:有这样的linux命令行工具吗?