2017-01-02 8 views
0

最近SSH.NETライブラリを手にしていましたが、 第2のコマンドを実行しようとすると、配置されたオブジェクトのエラーを検索/トラブルシューティングを行っています。ここに私のコードです: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

関連する問題