Ошибка «StandardIn не был перенаправлен» в .NET (C #)

Я хочу создать простое приложение с использованием 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);
    }
21
задан JohnFx 11 January 2012 в 21:31
поделиться

1 ответ

Если вы хотите увидеть простой пример того, как записать свой процесс в поток, используйте этот код ниже в качестве шаблона, не стесняйтесь изменять его в соответствии со своими потребностями.

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

8
ответ дан 29 November 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: