2011-03-13 1 views
0

Je dois créer une fonction pour envoyer des commandes au flux depuis process.StandardInput. J'ai une erreur avec l'auteur ne pas être initialisé. Comment puis-je réparer cela?Utiliser StreamWriter ou Stream en dehors de la fonction

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

Exactement quel problème avez-vous? Je ne pense pas que votre code va même compiler. –

+0

'while (true)' sans moyen d'en sortir. mouvement audacieux :) –

+0

Aïe !! C'est trop grossier de continuer à demander à l'utilisateur d'entrer sur la console sans en sortir .. –

Répondre

0

Sans l'erreur spécifique que vous obtenez c'est ma meilleure estimation quant au problème.

Vous créez une variable membre private StreamWriter writer, puis essayez d'y accéder à l'intérieur des méthodes static. Essayez de faire StreamWriter writer statique. En outre, vous avez un bloc try, mais pas catch ou finally. Supprimez complètement le try ou ajoutez un traitement d'erreur avec un bloc catch. Une dernière chose, je ne suis pas sûr de ce que vous essayez d'accomplir complètement, mais je voudrais fortement suggérer que vous ajoutez un moyen de sortir de votre boucle while. Tel qu'il est, il est garanti d'être une boucle infinie.

+0

D'accord, j'étais sous l'impression que si je l'avais rendu statique, je ne pouvais pas définir la valeur pour cela à partir de la fonction. Il y a un bloc catch et la boucle while est temporaire pour le test. J'ai beaucoup réduit le code afin qu'il soit plus facile à lire. –

+0

petit-fils :) semble que vous êtes bon à aller alors. –

Questions connexes