我正在开发一个独立的单用户桌面应用程序C#,它要求用户登录该应用程序。我想确保在5分钟左右没有活动的情况下,应用程序会提示用户再次登录。我有几个解决方案,但这似乎没有效率。以前在进行Web编程时,我能够使用会话变量来实现这种功能,C#中有类似的功能可以用于桌面应用程序。
答案 0 :(得分:4)
这样做的一种方法是设置一个始终在运行的5分钟计时器,并在用户计时时将用户注销。然后你可以让任何活动从头开始重启计时器。
如果这是一个WinForms应用,您可以让您的顶级表单实现IMessageFilter
。在PreFilterMessage
函数中,您将重新启动计时器并返回false
以查看指示活动(WM_KEYDOWN
,WM_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分钟不活动后将用户注销。