2011-02-11 4 views
2

Я разрабатываю C# автономное однопользовательское настольное приложение, которое требует от пользователя входа в приложение. Я хочу, чтобы при отсутствии активности в течение 5 минут приложение запрашивало у пользователя логин снова. У меня есть несколько решений, чтобы сделать это, но не кажется эффективным. Раньше, занимаясь веб-программированием, я мог выполнять эту функцию с использованием переменной сеанса, поскольку в C# есть аналогичные функции, которые можно использовать для настольных приложений.Переменная сеанса в настольном приложении C#?

+0

вы можете использовать простой таймер для этого –

+1

возможного дубликата [Как Auto-Logout Внутри приложения Windows Forms] (http://stackoverflow.com/questions/4603374/how-to-auto-logout- in-windows-forms-application) – Gabe

ответ

4

Один из способов сделать это - установить 5-минутный таймер, который всегда работает, и регистрирует пользователя, когда он тикает. Затем вы можете активировать любое действие с самого начала.

Если это приложение WinForms, вы можете использовать формы верхнего уровня IMessageFilter. В вашей функции PreFilterMessage вы должны перезапустить таймер и вернуть false для сообщений, указывающих активность (WM_KEYDOWN, WM_MOUSEMOVE и т. Д.), Чтобы все нормально обрабатывалось.

+1

Спасибо за ввод. У меня тоже было знакомое решение. Я буду реализовывать это. – abduls85

0

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

2

Вы всегда можете добавить триггер для автоматического выхода из системы в приложении Windows Forms. Вот ссылка с примерами с принятым ответом

How can I trigger an auto-logout within a Windows Forms Application?

Для мониторинга активности пользователей, вы можете создать пользовательскую форму на основе класса , из которых ваши заявки будут наследовать. Там вы можете подписаться на события MouseMove и KeyDown (настройка свойства KeyPreview на true), любой из которых будет поднят всякий раз, когда пользователь активен. Затем вы можете создать System.Threading.Timer с установленным временем , установленным на 30 минут, и отложить его с помощью метода Change() всякий раз, когда будет обнаружена активность пользователя.

+0

Спасибо за помощь. – abduls85

Смежные вопросы