![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Как корректно обработать отмену сессии в приложении на Delphi для очистки данных в базе данныхDelphi , ОС и Железо , WindowsВопрос пользователя связан с необходимостью корректной обработки отмены сессии в приложении, работающем на Windows Server 2003 в терминальных службах. Пользователь использует десктопное приложение, запускающее программы и имеющее кнопку для выхода из системы. При выходе должно произойти два действия: пользователь должен быть выведен из системы Windows, а также должна быть вызвана хранимая процедура для очистки состояния пользователя в базе данных. Проблема возникает, когда пользователь отменяет процесс выхода, например, если приложение, такое как MS Word, запрашивает сохранение изменений. Подтвержденный ответ:Для решения проблемы можно использовать механизм уведомлений RDS (Remote Desktop Services). В частности, можно зарегистрировать службу для получения уведомлений о входе и выходе сессии пользователя (WTS_SESSION_LOGON и WTS_SESSION_LOGOFF соответственно). Уведомление WTS_SESSION_LOGOFF будет отправлено только в случае фактического завершения сессии, то есть если пользователь нажимает кнопку "Отмена" в диалоге сохранения изменений в Word, Windows не будет считать сессию завершенной и уведомление WTS_SESSION_LOGOFF не будет отправлено. Альтернативный ответ:Другой подход заключается в перепроектировании приложения с разделением пользовательской логики сессии и самого десктопного приложения. Логику пользовательского состояния можно перенести в отдельную службу, которая будет регистрироваться для получения уведомлений RDS. Пример кода на Object Pascal (Delphi):
Важно, что если ваше десктопное приложение не является полноценной оболочкой, но просто графическим интерфейсом, запускаемым в Citrix, то вам необходимо будет обеспечить его работу и после отмены выхода пользователем. В этом случае, возможно, потребуется более тонкая настройка механизма уведомлений или изменение подхода к управлению сессиями. Заключение:Для корректной обработки отмены сессии в приложении на Delphi, предназначенном для очистки данных в базе данных, можно использовать механизмы уведомлений RDS и перепроектировать приложение таким образом, чтобы логика очистки данных была отделена от самого десктопного приложения. Это позволит избежать нежелательного удаления данных при отмене сессии пользователем. Вопрос касается корректной обработки отмены сессии пользователем в приложении на Delphi для очистки данных в базе данных. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |