有没有办法在编写控制台应用程序时创建第二个控制台以在.NET中输出?

时间:2009-03-30 13:37:03

标签: c# .net console

在编写控制台应用程序时,有没有办法在.NET中创建第二个控制台输出?

3 个答案:

答案 0 :(得分:18)

好吧,你可以启动一个新的cmd.exe进程并使用stdio和stdout来发送和接收数据。

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

Process p = Process.Start(psi);

StreamWriter sw = p.StandardInput;
StreamReader sr = p.StandardOutput;

sw.WriteLine("Hello world!");
sr.Close();

有关MSDN的更多信息。

答案 1 :(得分:3)

以下内容将触发与应用程序相关的控制台窗口数量,并将控制台的数量和参数存储在字符串字典中,然后循环生成所需数量的生成的控制台应用程序。如果只产生一个过程,你只需要过程的东西。

//Start looping dic recs and firing console
foreach (DictionaryEntry tests in steps)
{
    try
    {
        Process runCmd = new Process();
        runCmd.StartInfo.FileName = CONSOLE_NAME;
        runCmd.StartInfo.UseShellExecute = true;
        runCmd.StartInfo.RedirectStandardOutput = false;
        runCmd.StartInfo.Arguments = tests.Value.ToString();

        if (cbShowConsole.Checked)
        {
            runCmd.StartInfo.CreateNoWindow = true;
            runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
        }
        else
        {
            runCmd.StartInfo.CreateNoWindow = false;
            runCmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
        }
        runCmd.Start();                
    }
    catch (Exception ex)
    {
        string t1 = ex.Message;
    }
}

请注意,这是为了运行隐藏(CreateNoWindow)或可见。

答案 2 :(得分:-2)

单个控制台附加到任何给定进程。所以简而言之,你不能。但有办法“假装”