Простой код консоли, который читает консоль под названием ShellStream,
private ShellStream Shell;
public TelnetConnection(string Hostname, int Port, string MySSHHost, string MySSHRootUser, string MySSHRootUserPassword)
{
SshConnection(MySSHHost, MySSHRootUser, MySSHRootUserPassword);
shell.DataReceived += new EventHandler<ShellDataEventArgs>(shell_DataReceived); /// Created a event
}
Итак, событие создается ниже
private void shell_DataReceived( object sender, ShellDataEventArgs e)
{
ScbyteReceived = e.Data;
string result = Encoding.UTF8.GetString(e.Data, 0, e.Data.Count());
ConsoleRead = result; <---------------------here
Console.WriteLine(result);
}
Теперь я хочу читать из события в реальном времени, поэтому я создаю строковую переменную "ConsoleRead" и передаю ей "результат"
затем в другой функции я начал читать из консоли, как показано ниже
public string ReadWithTimeOut(int Tout)
{
long mycount = 0;
if (!sshClient.IsConnected) return null;
StringBuilder sb = new StringBuilder();
do
{
//ParseTelnet(sb);
sb.Append(ConsoleRead); /// <-----------------here
System.Threading.Thread.Sleep(TimeOutMs);
mycount += TimeOutMs;
} while (mycount < (long) Tout);
return sb.ToString();
}
Я знаю, что это не правильный путь. Не могли бы вы, ребята, предложить мне лучший способ чтения из консоли оболочки в режиме реального времени и передачи его в метод ReadWithTimeOut (). обратите внимание, я вызываю метод ReadWithTimeOut только при необходимости со временем.