You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET WinForms应用自动超时关闭(释放许可证)实现咨询

VB.NET Windows Forms 实现15分钟无操作自动关闭功能

核心思路

使用System.Windows.Forms.Timer控件实现超时逻辑:

  • 初始化计时器,设置15分钟(900000毫秒)的间隔
  • 监听用户的鼠标、键盘交互,一旦有操作就重置计时器
  • 计时器触发时,自动关闭应用并释放许可证资源
  • 用户完成操作后,可手动停止计时器,避免自动关闭

实现步骤与示例代码

1. 窗体设计与控件配置

在WinForms窗体中添加一个Timer控件(命名为idleTimer),可通过工具箱拖拽或代码初始化。

2. 完整代码示例

Imports System.Windows.Forms

Public Class MainForm
    ' 定义超时时间:15分钟 = 15*60*1000 = 900000毫秒
    Private Const TimeoutMilliseconds As Integer = 900000

    Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' 初始化计时器
        idleTimer.Interval = TimeoutMilliseconds
        idleTimer.Start()
    End Sub

    ' 计时器触发事件:超时后关闭应用并释放许可证
    Private Sub idleTimer_Tick(sender As Object, e As EventArgs) Handles idleTimer.Tick
        ' 先执行许可证释放逻辑,根据实际需求调整
        ReleaseLicenseResource()

        ' 关闭应用
        Application.Exit()
    End Sub

    ' 重置计时器的通用方法
    Private Sub ResetIdleTimer()
        If idleTimer.Enabled Then
            idleTimer.Stop()
            idleTimer.Start()
        End If
    End Sub

    ' 监听鼠标移动事件,重置计时器
    Private Sub MainForm_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove, 
        btnCompleteOperation.MouseMove, txtInput.MouseMove
        ResetIdleTimer()
    End Sub

    ' 监听键盘按键事件,重置计时器
    Private Sub MainForm_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress, 
        txtInput.KeyPress
        ResetIdleTimer()
    End Sub

    ' 用户完成操作后,手动取消超时(比如点击"完成"按钮)
    Private Sub btnCompleteOperation_Click(sender As Object, e As EventArgs) Handles btnCompleteOperation.Click
        ' 执行操作完成逻辑
        CompleteUserOperation()

        ' 停止计时器,不再触发自动关闭
        idleTimer.Stop()
    End Sub

    ' --- 以下是示例业务逻辑,根据实际需求替换 ---
    Private Sub ReleaseLicenseResource()
        ' 编写释放许可证资源的代码,比如断开连接、释放锁等
        MessageBox.Show("应用超时,已释放许可证资源", "超时提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Sub

    Private Sub CompleteUserOperation()
        ' 编写用户完成操作后的逻辑,比如保存数据、提交请求等
        MessageBox.Show("操作完成,已取消自动超时", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Sub
End Class

关键说明

  • 交互事件监听:要确保所有用户可能操作的控件都添加到MouseMove和KeyPress的事件处理中,避免遗漏导致计时器不重置。
  • 许可证释放:ReleaseLicenseResource方法需要替换为实际的资源释放逻辑,必须在应用关闭前执行,确保资源被正确释放。
  • 手动取消超时:用户完成操作后,通过点击按钮等方式调用idleTimer.Stop(),停止计时器,避免应用被自动关闭。
  • 计时器状态管理:重置计时器时先停止再启动,确保计时从当前时间重新开始。

内容的提问来源于stack exchange,提问作者Tleilax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:25:06