美好的一天! 我知道这个问题:https://stackoverflow.com/questions/8826884/standardin-has-not-been-redirected-error-in-net-c
但这对我不起作用。
所以我这样做: 1.运行控制台应用程序 2.在此应用程序中运行线程(启动另一个控制台应用程序):App2 输入参数是:
var ps = new ProcessStartInfo();
ps.FileName = "something filepath";
ps.Arguments = arrgs;
ps.RedirectStandardOutput = false;
ps.UseShellExecute = false;
ps.RedirectStandardInput = true;
var p = Process.Start(ps);
App2运行并且正常工作。所以,我必须正确关闭这个程序 - 设置为这两个单词。
停止此过程(App2):
public void Stop(int processId)
{
var p = Process.GetProcessById(processId);
using (StreamWriter sr = p.StandardInput)
{
sr.WriteLine("word1");
sr.WriteLine("word2");
sr.Close();
}
p.WaitForExit(10000);
p.Close();
}
但是我得到了Exception“StandardIn没有被重定向”与使用相符。 同时,App2正确停止并等待Cntrl-C或两个任何单词(关闭控制台)。
然后,我删除了这行代码:
using (StreamWriter sr = p.StandardInput)
{
sr.WriteLine("word1");
sr.WriteLine("word2");
sr.Close();
}
然后 - App2正确关闭。
那么,为什么StreamWriter关闭了p.StandartInput?
谢谢!