2012-06-26 2 views
0

c를 본인은 Process 클래스
문제로부터 상속 클래스 CCProcess를 작성한
C#에서 System.Diagnostics.Process가를 이용한 프로세스를 생성하고 ErrorDataRecieved 또는 OutputDataReceived는 해고되지 않는 것을 .. herez 내 코드 내가 뭘 잘못System.Diagnostics.Process가 통해 프로세스를 시작할 때 수신에는 출력되지 - #

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); 
       } 
      }; 
     } 

?
는 제공된 코드는 어쨌든
나는 Bery에 기본적인 일을
Process.BeginOutputReadLine()
낭비 2시간 때문에 누락 된 클래스의 생성자 CCProcess

+0

왜 downvote? 4 년 전 완전하고 나 자신에 의해 답변 된 질문에? –

답변

관련 문제