子进程窗口没有出现

时间:2017-10-27 11:58:12

标签: c# child-process

我正在尝试从显示控制台的c#控制台应用程序创建子进程。我尝试了以下但没有窗口出现。

public static bool IsValidPattern(string str)
  {
     return Regex.IsMatch(str, @"\?\+[a-zA-Z]\+$");
  }

1 个答案:

答案 0 :(得分:0)

在父控制台中运行子进程的正确方法是设置UseShellExecute类的ProcessStartInfo属性。让我们考虑一个执行时间命令的例子。为何时间?因为它从标准输入读取。这样您就可以知道它使用的是哪个控制台。

public class Program
{
    public static void Main(string[] args)
    {
        var processInfo = new ProcessStartInfo
        {
            FileName = "cmd.exe",
            Arguments = "/c time"
        };

        Console.WriteLine("Starting child process...");
        using (var process = Process.Start(processInfo))
        {
            process.WaitForExit();
        }
    }
}

我们保留了默认值UseShellExecute,即true。这意味着shell将用于子进程。使用shell意味着将创建一个新的控制台。

让我们将UseShellExecute的值翻转为false

public class Program
{
    public static void Main(string[] args)
    {
        var processInfo = new ProcessStartInfo
        {
            UseShellExecute = false, // change value to false
            FileName = "cmd.exe",
            Arguments = "/c time"
        };

        Console.WriteLine("Starting child process...");
        using (var process = Process.Start(processInfo))
        {
            process.WaitForExit();
        }
    }
}