2007. 8. 29. 09:36
[코드]
간혹가다 두 개의 독립된 Process간의 통신이 필요한 경우가 있다. 기본적으로 .NET Remoting을 통해 구현을 할수도 있겠지만, 좀 더 간단한 구현을 원할 경우에는 Process 클래스에서 제공하는 표준 입출력 Redirection을 통해 두 개의 프로세스간에 메세지를 교환할 수 있다.
ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = "Program.exe"; psi.RedirectStandardOutput = true; psi.UseShellExecute = false; Process TargetProgram = new Process(); TargetProgram StartInfo = psi; TargetProgram.OutputDataReceived += new DataReceivedEventHandler(TargetProgram_OutputDataReceived); TargetProgram.Start(); //대상 프로세스의 표출 출력을 읽어들인다. TargetProgram.BeginOutputReadLine(); void TargetProgram_OutputDataReceived(object sender, DataReceivedEventArgs e) { if (!String.IsNullOrEmpty(e.Data)) { Console.WriteLine(e.Data); } }
// "Program.exe" Console.WriteLine("Hello :)");반대의 경우로 송신을 원할 경우에는 대상의 표준 입력을 재설정하고, 표준 입력 스트림에 메세지를 송신하면 된다.
TargetProgram.StartInfo.RedirectStandardInput = true; StreamWrite sw = TargetProgram.StandardInput; myStreamWriter.WriteLine("Hello ;)");
반응형