J'ai une application de console et une application de formulaires gagnants qui doivent tous deux appeler un serveur distant pour certaines données, ils font un appel à la partie ligne de commande de Putty, plink .exe, pour exécuter une commande à distance sur SSH.Process.WaitForExit() sur la console vs Windows Forms
J'ai créé une minuscule bibliothèque de classe pour les deux à partager, en cours d'exécution suivantes:
public static string RunCommand(string command, string arguments) {
ProcessStartInfo startInfo = new ProcessStartInfo {
FileName = command,
Arguments = arguments,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true
};
string output = null;
using (Process p = new Process()) {
p.StartInfo = processStartInfo;
p.Start();
output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
return output;
}
Dans l'application de la console tout fonctionne bien, sous la victoire forme, il ne l'erreur pas, il semble que WaitForExit() n'attend pas. Je reçois une chaîne vide pour la sortie. J'ai confirmé à partir du serveur distant que l'utilisateur s'est connecté, il semble donc que la commande a été exécutée.
Des idées?
Où votre fonction est appelée? –
J'ai essayé les deux dans Program.Main() et le ctor de la forme principale avec les mêmes résultats. – Gavin
Envisagez de lire 'p.StandardError' - même si c'est juste pour être sûr que la commande s'est bien déroulée comme prévu. –