.Net中的“StandardIn尚未被重定向”

时间:2014-01-13 06:24:39

标签: c# process streamwriter

美好的一天! 我知道这个问题: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?

谢谢!

0 个答案:

没有答案