C# WPF cmd.exe进程立即关闭

C# WPF cmd.exe进程立即关闭,c#,wpf,C#,Wpf,在我的WPF应用程序中,我试图通过System.Diagnostics.Process打开cmd.exe,但每次它点击Process.Start()时,它都会立即关闭,我无法向它写入任何其他内容。但是,如果调用static Process.Start(),它将保持打开状态,但是我不确定如何写入它。见下文 var processInfo = new ProcessStartInfo("cmd.exe") { UseShellExecute =

在我的WPF应用程序中,我试图通过System.Diagnostics.Process打开cmd.exe,但每次它点击Process.Start()时,它都会立即关闭,我无法向它写入任何其他内容。但是,如果调用static Process.Start(),它将保持打开状态,但是我不确定如何写入它。见下文

        var processInfo = new ProcessStartInfo("cmd.exe")
        {
            UseShellExecute = false,
            RedirectStandardInput = true,
        };

        var process = new Process()
        {
           StartInfo = processInfo,
        };

        process.Start(); // This close immediately and not work 

        Process.Start("cmd.exe"); // This will work but can't write to it

        process.StandardInput.WriteLine(someText);
        process.StandardInput.WriteLine(moreText);
用于等待cmd

process.WaitForExit(); 

我做了一些研究,发现解决方案是可行的。不确定这是否是最好的方法,但它对我有效

[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();

private void BtnSubmit_OnClick(object sender, RoutedEventArgs e)
    {
        var processInfo = new ProcessStartInfo("cmd.exe")
        {
            UseShellExecute = false,
            RedirectStandardInput = true
        };

        var process = new Process()
        {
            StartInfo = processInfo,
        };

        AllocConsole();
        process.Start(); // This close immediately and not work 

        process.StandardInput.WriteLine("someText");
        process.StandardInput.WriteLine("moreText");
        process.WaitForExit();
    }

插入这行代码仍然无法使代码正常工作。应用程序是否仍然会立即关闭?是的,它会立即关闭。您能否发布一些代码,说明您正在尝试执行的操作。。理想情况下,此语句应该等待您的进程(此处为cmd)关闭后再退出。我使用了与OP POST相同的代码,并合并了您建议的更改,仅此而已。这在我的Windows 7笔记本电脑上运行得很好,但在Windows 10中它确实保持不动,但目录是空的,我写的任何内容都不会显示。顺便说一句,我不知道这是否明显,但我不知道。这只是在Visual Studio中调试时出现的问题。部署项目并在.exe文件上运行后,命令提示符窗口将保持不动,您可以对其进行写入,没有问题!