1

C# で System.Diagnostics.Process を使用してプロセスを作成しています。クラスから継承されたクラス
を作成しました 。問題は、ErrorDataRecieved または OutputDataReceived が起動されていないことです。CCProcessProcess

public CCProcess(string executablePath, string[] parameters, CCProcessInfo processInfo)
        {
            this.ProcessInfo = processInfo;
            this.OutputMessages = new List<ProcessOutputMessage>();
            this.ProcessId = Guid.NewGuid().ToString();

            base.EnableRaisingEvents = true;
            this.StartInfo = new ProcessStartInfo(executablePath)
            {
                Arguments = string.Join(" ", parameters.Select(s => string.Format("\"{0}\"", s))),
                CreateNoWindow = true,
                ErrorDialog = false,
                RedirectStandardError = true,
                RedirectStandardInput = true,
                RedirectStandardOutput = true,
                StandardErrorEncoding = Encoding.UTF8,
                StandardOutputEncoding = Encoding.UTF8,
                WindowStyle = ProcessWindowStyle.Hidden,
                UseShellExecute = false
            };

            this.ErrorDataReceived += (sender, e) =>
            {
                this.OutputMessages.Add(new ProcessOutputMessage() { Message = e.Data, Type = OutputType.Error });
                if (this.ErrorData_Recieved != null&&!string.IsNullOrEmpty(e.Data))
                {
                    this.ProcessInfo.LastResponseFromProcess = DateTime.Now;
                    this.ErrorData_Recieved(e.Data);
                }
            };

            this.OutputDataReceived += (sender, e) =>
            {
                this.OutputMessages.Add(new ProcessOutputMessage() { Message = e.Data, Type = OutputType.Output });
                if (OutputData_Recieved != null && !string.IsNullOrEmpty(e.Data))
                {
                    this.ProcessInfo.LastResponseFromProcess = DateTime.Now;
                    OutputData_Recieved(e.Data);
                }
            };
        }

私は何を間違っていますか?
提供されるコードはクラスのコンストラクターですCCProcess

4

1 に答える 1

1


うーん、私はこれが嫌いです..ここに質問を投稿してから、それらに答えます..とにかく
Process.BeginOutputReadLine()
、これについての詳細はこちら
http://msdn.microsoft.com/en-us/library/system .diagnostics.process.beginoutputreadline

于 2012-06-26T20:37:18.760 に答える