2017-01-02 1 views
0

Я недавно играл в библиотеке SSH.NET, и я пытался найти/устранить проблему с удаленным объектом при попытке выполнить вторую команду. Вот мой код:SSH.NET «Не удается получить доступ к удаленному объекту»

private void statusBtn_Click(object sender, System.EventArgs e) 
{ 
    Commands("status"); 
} 

private void startBtn_Click(object sender, System.EventArgs e) 
{ 
    Commands("start"); 
} 

private void Commands(string cmd) 
{ 
    using (sdtd_client) 
    { 
     sdtd_client.Connect(); 
     switch (cmd) 
     { 
      case "status": 
       var status = sdtd_client.CreateCommand("7dtd.sh status Nom"); 
       string result = status.Execute(); 
       outputBox.AppendText(result); 
      break; 
      case "start": 
       var start = sdtd_client.CreateCommand("uptime"); 
       string result_start = start.Execute(); 
       outputBox.AppendText(result_start); 
      break; 
      default: 
       outputBox.AppendText("Unrecognized Command."); 
      break; 
     } 
     sdtd_client.Disconnect(); 
    } 
} 

Я понимаю «sdtd_client.Disconnect();» удаляет соединение, но даже не используя его, он все еще располагает.

Как я могу безопасно подключаться, выполнять, отключать каждый раз, когда я запускаю разные команды?

Даже если я открыл соединение при запуске приложения и отключился только при разгрузке, каждая выполненная команда удалит объект соединения.

Есть ли что-то очевидное, что мне не хватает?

ответ

2

Вы не разместили декларацию/инициализацию sdtd_client в своем коде, но блок using (sdtd_client) будет располагать объект каждый раз, когда он покидает блок. Я подозреваю, что ты этого действительно не хочешь.

+0

Извините, я предположил, что объявление клиента было известно -> SshClient sdtd_client = new SshClient («host», «user», «pass») – Faded

+0

Хорошо, я в основном просто вынул его из блока использования, и он работает .. Спасибо для указания очевидного <3 – Faded

 Смежные вопросы

  • Нет связанных вопросов^_^