Использование режима отладки для программы, работающей на удаленном рабочем столе - PullRequest
0 голосов
/ 16 декабря 2008

У меня есть короткая программа, которая используется исключительно с подключением к удаленному рабочему столу, которая настроена только для запуска этой программы и не позволяет какой-либо другой доступ к удаленному компьютеру. Ранее программа просто выходила и позволяла завершить соединение, но это было очень медленно, поэтому я написал следующий код, чтобы завершить удаленный сеанс после завершения работы программы.

    [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. Соединение завершается после запуска программы. Однако при тестировании и отладке этой программы мой компьютер перезагружается после каждого запуска.

Я ищу хороший способ провести различие между этими случаями. Должен ли я установить какой-нибудь сценарий отладки, который удаленно запускает и запускает программу удаленно? Или есть какой-то способ программно определить, работает ли программа в режиме отладки, и просто отключить процедуру выхода в этом случае?

1 Ответ

2 голосов
/ 16 декабря 2008

Вы можете использовать директивы прагмы:

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" объявлена ​​где-то - это может быть объявлено во время компиляции (условные символы компиляции на панели свойств Build) или как часть оболочки операционной системы, см. Условный атрибут для получения дополнительной информации об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...