从C#打开两个控制台窗口

[DllImport("kernel32.dll")] private static extern Int32 AllocConsole(); 

我可以使用此命令打开cmd.exe。 但我只能打开一个控制台窗口并写入其中。 我怎么能打开另一个? 打开两个控制台窗口是否有干净,快速的解决方案?

不幸的是,抱歉 – 在Windows中,每个应用程序不能有多个控制台窗口。

所以你可以在一个单独的C#windows应用程序中执行多个控制台窗口,但要这样做,你必须要做一些事情。 Process.start()和命令行参数。

如果你这样做,你可以让你的应用创建自己的另一个实例,但使用不同的命令行参数让每个部分做不同的事情。

这是一个简单的例子,说明如何做到这一点。

  namespace Proof_of_Concept_2 { class Program { static void Main(string[] args) { if (args.Length!= 0) { if (args[0] == "1") { AlternatePathOfExecution(); } //add other options here and below } else { NormalPathOfExectution(); } } private static void NormalPathOfExectution() { Console.WriteLine("Doing something here"); //need one of these for each additional console window System.Diagnostics.Process.Start("Proof of Concept 2.exe", "1"); Console.ReadLine(); } private static void AlternatePathOfExecution() { Console.WriteLine("Write something different on other Console"); Console.ReadLine(); } } } 

这是它工作的截图。 在此处输入图像描述

结论,

获得2个控制台窗口很容易,让他们互相交谈是一个单独的问题。 但我会建议命名管道。 相关的Stackoverflowpost

你必须改变你的想法,因为一旦在不同进程上运行的2个控制台不会自动相互通信。 无论你在其中一个上做什么计算,另一个完全没有意识到。

你可以做

 Process.Start("cmd.exe"); 

你想要多少次。 你是这个意思吗?