C#桌面应用程序中的会话变量?

时间:2011-02-11 02:07:31

标签: c#

我正在开发一个独立的单用户桌面应用程序C#,它要求用户登录该应用程序。我想确保在5分钟左右没有活动的情况下,应用程序会提示用户再次登录。我有几个解决方案,但这似乎没有效率。以前在进行Web编程时,我能够使用会话变量来实现这种功能,C#中有类似的功能可以用于桌面应用程序。

3 个答案:

答案 0 :(得分:4)

这样做的一种方法是设置一个始终在运行的5分钟计时器,并在用户计时时将用户注销。然后你可以让任何活动从头开始重启计时器。

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

答案 1 :(得分:2)

您始终可以在Windows窗体应用程序中添加触发器以自动注销。以下是包含已接受答案的示例的链接

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

  

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

答案 2 :(得分:0)

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