c# - 写入现有分配控制台的新 cmd 进程

c# - new cmd process writing to existing allocated console

我在 C# 中创建的项目使用多线程,我的控制台应用程序解决方案使用 +2 个项目,1 个作为 "main" 项目,然后子项目作为程序的实际功能组合在 1 个解决方案中(与适当的参考)

我知道对于每个进程,只能使用 1 个控制台,因此据我了解,我应该创建一个新的 cmd.exe 进程并将这个特定线程的输出分配给这个控制台

问题:使用 cmd.exe 创建一个简单的进程很容易,它会在现有的 2 个控制台上创建一个新的 cmd 控制台。但是重新分配标准输出等(下面的参考代码)。在新的子线程程序(又名不是主应用程序)中,它开始在现有控制台而不是新创建的控制台中写入,因此只有 1 个控制台可见,

我希望现有的控制台和具有适当输出的新控制台一样可见

我是不是漏了什么?

p.s。我正在学习线程以及这是一个副项目

        Process psi = new ProcessStartInfo("cmd.exe")
        {
            RedirectStandardError = true,
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = false,
        };

        p = Process.Start(psi);

        Streamwriter sw = p.StandardInput;
        Streamreader sr = p.StandardOutput;

不能那样做。

您的程序实例,即使是控制台,也不是 cmd window。这是一个控制台。

此外,要按照您想要的方式工作,您需要打开 StreamWriterStandardOutput 流,因为您想要 输出 数据...这是设计所不允许的。

window 属于它的进程,而不是它的线程,所以 1 个进程 = 1 个控制台 window。如果您想要更多控制台 windows,请使用多个进程并使它们使用互操作进行通信。

我求助于使用线程来检查更新并重定向标准 input/output 如上所述