代码之家  ›  专栏  ›  技术社区  ›  user1884032

winform和会话超时

  •  0
  • user1884032  · 技术社区  · 10 年前

    我有一个vb.net winform,我想知道如何在其中添加类似会话超时的内容。例如,我将变量设置为10分钟,在这10分钟内,如果没有活动(没有鼠标/键盘交互),我想注销用户。有人能在这个问题上解释一下如何使这项工作吗?

    3 回复  |  直到 10 年前
        1
  •  2
  •   user240141 user240141    10 年前

    第一个问题,为什么你想在winform中做。我们通常在web表单中使用这些内容。但即使你想在WinForms中使用你需要使用的东西 Timer Class . 每当您遇到活动时,您可以通过调用 Stop 然后立即呼叫 Start 。在 Timer's Tick 事件(假设这是 System.Windows.Forms.Timer )你会准备好的。

        2
  •  1
  •   Ripple    10 年前

    我建议你利用这个活动 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
    
        3
  •  0
  •   Community CDub    8 年前

    如果您正在寻找一种检测应用程序外部输入的方法,Amit的建议将不起作用。

    看见 Detecting idle users in Winforms 如果是这样的话。使命感 GetLastInputInfo() 检查最后一个输入值应该会给你一些帮助。

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