2017-01-02 65 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 =新的SshClient(「主機」,「用戶」,「通」) – Faded

+0

好吧,我基本上只是把它從使用塊,它的工作..謝謝指出明顯的<3 – Faded