У меня есть консольное приложение и приложение win forms, которые оба должны вызывать на удаленном сервере для получения некоторых данных, они обращаются к части командной строки Putty, plink.exe, для запуска удаленной команды через SSH .
Я создал крошечную библиотеку классов для совместного использования, выполнив следующее:
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;
}
Под консольным приложением все работает нормально, при формах win это не ошибка, похоже, что WaitForExit () просто не ждет. Я получаю пустую строку для вывода. С удаленного сервера я подтвердил, что пользователь вошел в систему, поэтому, похоже, команда выполнила.
Есть идеи?