Я хочу создать простое приложение с использованием stdin. Я хочу создать список в одной программе и распечатать его в другой. Я придумал ниже.
Я понятия не имею, работает ли app2, однако в app1 я получаю исключение «StandardIn не был перенаправлен.» на Writeline (внутри оператора foreach). Как мне сделать то, что я намереваюсь?
ПРИМЕЧАНИЕ: Я попытался установить для UseShellExecute значение true и false. Оба вызывают это исключение.
//app1
{
var p = new Process();
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.FileName = @"path\bin\Debug\print_out_test.exe";
foreach(var v in lsStatic){
p.StandardInput.WriteLine(v);
}
p.StandardInput.Close();
}
//app 2
static void Main(string[] args)
{
var r = new StreamReader(Console.OpenStandardInput());
var sz = r.ReadToEnd();
Console.WriteLine(sz);
}
Если вы хотите увидеть простой пример того, как записать свой процесс в поток, используйте этот код ниже в качестве шаблона, не стесняйтесь изменять его в соответствии со своими потребностями.
class MyTestProcess
{
static void Main()
{
Process p = new Process();
p.StartInfo.UseShellExecute = false ;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"path\bin\Debug\print_out_test.exe";
p.StartInfo.CreateNoWindow = true;
p.Start();
System.IO.StreamWriter wr = p.StandardInput;
System.IO.StreamReader rr = p.StandardOutput;
wr.Write("BlaBlaBla" + "\n");
Console.WriteLine(rr.ReadToEnd());
wr.Flush();
}
}
// Изменить, чтобы добавить свою работу в цикл for