新的CMD进程写入到现有分配的控制台
本文关键字:分配 控制台 CMD 进程 新的 | 更新日期: 2023-09-27 18:02:26
我在c#中创建的项目使用多线程,我的控制台应用程序解决方案使用+2个项目,1个作为"主"项目,然后子项目作为程序的实际功能组合在一个解决方案中(带有适当的引用)
我知道对于每个进程,只能使用一个控制台,因此据我的理解,我应该创建一个新的cmd.exe进程,并将这个特定线程的输出分配给这个控制台
问题:用CMD .exe创建一个简单的过程很容易,它在现有的CMD控制台上创建一个新的CMD控制台,因此2个控制台。但重新分配标准输出等(参考代码如下)。在新的子线程程序(也不是主应用程序)中,它开始在现有的控制台中写入,而不是在新创建的控制台中写入,因此只有一个控制台可见,
我希望现有的控制台以及具有适当输出的新控制台可见
我错过了什么吗?
注。我正在学习线程以及这是一个业余项目
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
窗口。这是一个控制台。
此外,要按您想要的方式工作,您需要将StreamWriter
打开到StandardOutput
流,因为您想要输出数据…这在设计上是不允许的。
窗口由它的进程拥有,而不是它的线程,所以1个进程= 1个控制台窗口。如果你想要更多的控制台窗口,使用多个进程,并使它们使用互操作进行通信。
我使用一个线程来检查更新和重定向标准输入/输出,如上所述