2011-02-11 57 views
2

我正在开发一个C#的独立单用户桌面应用程序,它需要用户登录到应用程序。我想确保当5分钟左右没有活动时,应用程序将提示用户再次登录。我有几个解决方案要做到这一点,但似乎并不高效。以前在进行网络编程时,我能够使用会话变量来实现这种功能,C#中有类似的功能可用于桌面应用程序。C#桌面应用程序中的会话变量?

+0

你可以使用一个简单的定时器用于该 – 2011-02-11 02:23:07

+1

可能重复[如何自动注销在Windows窗体应用程序(http://stackoverflow.com/questions/4603374/how-to-auto-logout-在Windows窗体应用程序) – Gabe 2011-02-11 02:55:46

回答

4

这样做的一种方法是设置一个始终运行的5分钟计时器,并在用户滴答时记录用户。然后,您可以从一开始就有任何活动重新启动计时器。

如果这是一个WinForms应用程序,您可以让您的顶级窗体实现IMessageFilter。在您的PreFilterMessage函数中,您将重新启动计时器,并返回false以获取指示活动的消息(WM_KEYDOWNWM_MOUSEMOVE等)以使所有内容都得到正常处理。

+1

感谢您的输入。我也有一个类似的解决方案。我会执行这个。 – abduls85 2011-02-11 03:16:46

0

不,但会话状态只是帮助克服Web应用程序无状态性质的变量列表。由于桌面应用程序不是无状态的,因此没有必要。我只需使用一个简单的计时器或类似的东西,并在用户闲置5分钟后将用户注销。

2

您可以随时在Windows窗体应用程序中添加触发器以自动注销。这里是一个例子链接与接受的答案

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

监控用户活动,您可以创建一个自定义的基于表单类 从您的申请表格将继承。您可以在 中订阅MouseMove和KeyDown事件(将KeyPreview 属性设置为true),无论用户何时激活 ,都会引发其中任一项。然后,您可以创建一个System.Threading.Timer,并将应有的 时间设置为30分钟,并在检测到用户活动时使用Change()方法 将其推迟。