在标准输入上写入子进程,然后在子进程仍在运行时退出父进程

问题描述

我正在编写一个C#控制台应用程序,其中有一个进程会生成一个子进程,并使用Process.StandardInput.WriteLine(mes)在该子进程的标准输入上传一个大字符串。我遇到的问题是,父进程上的Process.StandardInput.WriteLine(mes)似乎直到子进程终止才返回,这时父进程继续并完成。

我需要一种在标准输入中将消息发送到子进程,然后终止父进程并让子进程继续运行的方法

我认为该程序易于遵循。父进程调用SendOutput(),后者调用Process.StandardInput.Writeline(mes)。之后,我希望它将继续进行Exit()调用。子进程仅使用Console.ReadLine()读取字符串

父流程代码

static void Main(string[] args)
{
    processstartinfo startInfo = new processstartinfo();
    startInfo.UseShellExecute = false;
    startInfo.RedirectStandardInput = true;
    startInfo.FileName = @"C:\Program Files\jobprinty\jobprintyDlite2020.exe";

    Process process = new Process();
    process.StartInfo = startInfo;
    process.Start();

    string message = GetConsoleinput();

    sendOutput(process,message);

    System.Environment.Exit(0);

}

public static void sendOutput(Process p,string mes)
{
    p.StandardInput.WriteLine(mes);
}

子进程代码

public static String GetConsoleinput()
{
    String line = null;
    String completeline = null;

    //reads from standard input into string,"complete line"
    do
    {
        line = Console.ReadLine();
        if (line != null) Console.WriteLine("--" + line);

        //line = line + Environment.NewLine;
        if (line != null) line = line.Trim();

        completeline = completeline + line + Environment.NewLine;

    } while (line != null);

    //delete extra white space from input,complete line
    completeline = completeline.Trim();
    return completeline;

}
public static void Main(string[] args)
{

    //------recieve args from console
     completeline = GetConsoleinput();

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)