问题描述
我正在编写一个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 (将#修改为@)