重定向进程输出 - 我得到空值

时间:2014-01-30 00:09:25

标签: c# console

我有一个解析txt文件并生成如下输出的程序:

enter image description here

如您所见,它有效。但是,如果使用args作为一行执行“map-server.exe”(即没有cd命令),它将不起作用。

我现在正试图在C#winform应用程序中使用它。

我想执行这个“map-server.exe”并传递我选择的* .txt文件的arg,并在我的应用程序上重新导出一个richtextbox输出。

所以,我尝试了以下内容:

namespace Test
{
    public partial class Test : Form
    {
        private string currentDir = System.IO.Path.GetDirectoryName(
            System.Reflection.Assembly.GetExecutingAssembly().Location);

        public Test()
        {
            InitializeComponent();
        }

        private void Test_Load(object sender, EventArgs e)
        {
            ParseScript("jobmaster.txt");
        }

        private void ParseScript(string fileName)
        {
            Process p = new Process()
            {
                StartInfo = new ProcessStartInfo()
                {
                    FileName = "cmd.exe",
                    Arguments = "/C cd /D " + currentDir + "\\script_checker_bin && map-server.exe --script-check "+ fileName,
                    CreateNoWindow = true,
                    UseShellExecute = false,
                    ErrorDialog = false,
                    RedirectStandardInput = true,
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                },
                EnableRaisingEvents = true,
                SynchronizingObject = this
            };
            p.OutputDataReceived += (s, e) => UpdateLog(s, e);
            p.Start();
            p.BeginOutputReadLine();
        }

        private void UpdateLog(object sender, DataReceivedEventArgs e)
        {
            if (null != e.Data && e.Data.Length > 0)
                this.richTextBox1.AppendText(e.Data);
        }
    }
}

启动应用时,e.Data始终为null。知道为什么这不起作用吗?

我的应用程序编译为Test.exe,这是所有文件的位置:

enter image description here

0 个答案:

没有答案