2011-03-13 4 views
0

process.StandardInput에서 Stream에 명령을 보내려면 함수를 만들어야합니다. 작성자가 초기화되지 않은 오류가 있습니다. 이 문제를 어떻게 해결할 수 있습니까?함수 밖에서 StreamWriter 또는 Stream 사용

private StreamWriter writer; 

private static void SendProcessCmd(string cmd) 
{ 
    writer.WriteLine(cmd); 
} 

public static void CreateProcess() 
{ 
    ProcessStartInfo processInfo = new ProcessStartInfo("java.exe", args); 
    processInfo.CreateNoWindow = true; 
    processInfo.UseShellExecute = false; 
    processInfo.RedirectStandardInput = true; 

    try 
    { 
     using (Process process = Process.Start(processInfo)) 
     { 
      writer = new StreamWriter(process.StandardInput.BaseStream); 
      //writer = process.StandardInput; 

      while (true) 
      { 
       String strInput = Console.ReadLine(); 
       writer.WriteLine(strInput); 
      } 

      process.WaitForExit(); 
     } 
    } 
} 
+0

정확히 어떤 문제가 있습니까? 나는 당신의 코드가 컴파일 될 것이라고 생각하지 않는다. –

+0

'while (true)'을 벗어날 방법이 없습니다. 대담한 움직임 :) –

+0

아야 !! 사용자가 콘솔을 빠져 나가지 않고 콘솔에 들어가라고 계속 묻는 것은 너무 무례합니다. –

답변

0

이 오류가 발생하지 않으면 문제가 발생했을 가능성이 가장 높습니다.

private StreamWriter writer 멤버 변수를 만들고 static 메서드 내에서 액세스하려고합니다. StreamWriter writer을 정적으로 만들어보세요.

또한 try 블록이 있지만 catch 또는 finally 블록이 없습니다. try을 완전히 제거하거나 catch 블록으로 오류 처리를 추가하십시오.

마지막으로 한 가지, 완전히 완료하려고하는 것이 확실하지 않지만 강력하게은 while 루프를 벗어나는 방법을 추가하는 것이 좋습니다. 그대로, 무한 루프가 보장됩니다.

+0

좋아, 나는 그것을 정적으로 만들면 인상을 받고 있었고, 나는 그 값을 기능에서 설정할 수 없었다. catch 블록이 있고 while 루프는 테스트 용으로 임시적인 것입니다. 코드를 많이 삭제하여 읽는 것이 더 쉬울 것입니다. –

+0

phew :) 당신이 그때 가야 좋다는 소리가납니다. –