winform和会话超时

时间:2015-02-19 13:10:46

标签: vb.net winforms session-timeout

我有一个vb.net winform,我想知道如何添加类似会话时间的东西。例如,我有一个varialbe设置为10分钟,在10分钟内,如果没有活动(没有鼠标/没有键盘交互),我想将用户注销。关于如何使这项工作,任何人都能对这个主题有所启发吗?

3 个答案:

答案 0 :(得分:2)

第一个问题,你为什么要做一个winform。我们通常在网络表单中使用的这些东西。但即使你想在WinForms中使用这些东西,你也需要使用Timer Class。 无论何时遇到活动,您都可以通过调用Stop然后立即呼叫Start来重置计时器。在Timer's Tick事件中放置您想要的任何代码(假设这是System.Windows.Forms.Timer),您将全部设置好。

答案 1 :(得分:0)

如果您正在寻找一种方法来检测您的应用程序之外的输入,Amit的建议将无效。

如果是这种情况,请参见Detecting idle users in Winforms。调用GetLastInputInfo()并检查最后一个输入值应该会给你一些东西。

如果您不担心用户离开您的应用程序,并在不使用它后退出,请使用Amit在输入事件上重置计时器的方法。

答案 2 :(得分:0)

我建议你使用活动Application.Idle。 无需P / Invoke。

Public Class Form1
    Private WithEvents _timer As Timer

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' 10 seconds for testing
        Me._timer = New Timer With {.Interval = 10000, .Enabled = True}

        AddHandler Application.Idle, AddressOf Me.Application_Idle
    End Sub

    Private Sub Application_Idle(sender As Object, e As EventArgs)
        Me._timer.Stop()
        Me._timer.Start()
    End Sub

    Private Sub Timer_Tick(sender As Object, e As EventArgs) Handles _timer.Tick
        Me._timer.Stop()
        RemoveHandler Application.Idle, AddressOf Me.Application_Idle
        ' Do something to log the user out
        Me.Close()
    End Sub
End Class