リモートデスクトップ上で動作するプログラムのデバッグモードを使用します
-
21-08-2019 - |
質問
私はそのプログラムを実行して、リモートマシンに他のアクセスを許可しないように設定されていますリモートデスクトップ接続でのみ使用され、短いプログラムを持っています。以前は、プログラムだけで終了し、接続を終了させ、それは非常に遅かったので、私は、プログラムが動作して行われているときに、リモートセッションを終了するには、次のコードを書いています。
[DllImport("wtsapi32.dll", SetLastError = true)]
static extern bool WTSLogoffSession(IntPtr hServer, int SessionId, bool bWait);
private IntPtr WTS_CURRENT_SERVER_HANDLE;
private const int WTS_CURRENT_SESSION = -1;
...
private void HardTerminalExit()
{
WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, false);
}
このプログラムは、特定のRDP接続ファイルを使用してリモート処理されている人々によって使用され、その生産環境にあるとき、これは正常に動作します。プログラムが実行された後に接続が終了します。しかし、すべての実行後に、私のコンピュータの再起動をこのプログラムをテストし、デバッグするときます。
私はこれらのケースを区別するための良い方法を探しています。私は中のリモート、リモートからプログラムを実行するデバッグスクリプトのいくつかの種類を設定する必要がありますか?またはプログラムプログラムは、デバッグモードで実行し、ちょうどその場合には終了プロシージャを無効にされているかどうかを検出する方法はありますか?
解決
あなたは、プラグマディレクティブを使用することができます:
private void HardTerminalExit()
{
#if DEBUG
// Soft Exit
#else
// Hard Exit
#end if
}
私はそれが新しいConditionalAttributeを使用するより良い練習だと信じて、私はあなたがそれを否定することができないと思うので、あなたが「RELEASE」を自分で環境変数を設定する必要があると思います:
[Conditional ( "RELEASE" )]
private void HardTerminalExit()
{
// Hard Exit, only called when "RELEASE" is defined.
}
「RELEASE」環境変数がどこかで宣言されている場合にのみ、このメソッドを呼び出すためにこのコンパイラを教えてくれます - これはコンパイル時で宣言することができます(ビルドプロパティペイン上の条件付きコンパイルシンボル)またはオペレーティング・システムのシェルの一部として、参照します ConditionalAttribute の本についての詳細防災情報のため。
所属していません StackOverflow