2011-03-13 44 views
0

我需要創建一個函數來從process.Standard輸入發送命令到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

究竟你有什麼問題?我認爲你的代碼甚至不會編譯。 – 2011-03-13 04:47:07

+0

'while(true)'無法突破它。大膽的舉動:) – 2011-03-13 04:56:21

+0

哎唷!這太粗魯了,不斷要求用戶在控制檯上輸入而不會觸發它。 – 2011-03-13 06:04:26

回答

0

沒有具體的錯誤,你得到這是我對這個問題的最佳猜測。

您正在創建成員變量private StreamWriter writer,然後嘗試在static方法中訪問它。嘗試使StreamWriter writer靜態。

此外,你有一個try塊,但沒有catchfinally。完全刪除try或添加一個錯誤處理catch塊。

最後一件事,我不確定你想要完成什麼,但我會強烈建議你添加一種方式來打破你的while循環。事實上,它保證是一個無限循環。

+0

好吧,如果我將其設置爲靜態,我無法爲其設置值。有一個catch塊,while循環只是暫時的測試。我把代碼剝離了很多,所以它會更容易閱讀。 – 2011-03-13 08:47:53

+0

phew :)聽起來像你很好去那麼。 – 2011-03-13 08:50:11