Skip to content

Delay 方法参考 ​

📋 方法列表 ​

方法说明
Callback设置回调模式(链式调用)
Sync设置同步等待模式(链式调用)
CountDown开始倒计时
Cancel取消延时

🔗 Callback 方法 ​

说明 ​

设置回调模式,延时结束后自动调用指定对象的指定方法。支持最多9个参数。

语法 ​

vb
Public Function Callback(ByVal CallbackObject As Object, ByVal ProcName As String, ParamArray P()) As cDelay

参数 ​

参数类型说明
CallbackObjectObject回调方法所在的对象
ProcNameString回调方法名称
P()ParamArray可变参数,最多9个

返回值 ​

返回自身对象,支持链式调用。

使用示例 ​

无参数回调 ​

vb
Private Delay As cDelay

Private Sub Test1()
    Set Delay = New cDelay
    Delay.Callback(Me, "DoSomething").CountDown 1000
End Sub

Public Sub DoSomething()
    Debug.Print "执行了!"
End Sub

带参数回调 ​

vb
Private Sub Test2()
    Set Delay = New cDelay
    Delay.Callback(Me, "ProcessData", "用户名", 25, True).CountDown 2000
End Sub

Public Sub ProcessData(ByVal name As String, ByVal age As Long, ByVal active As Boolean)
    Debug.Print name & ", " & age & ", " & active
End Sub

⏱️ Sync 方法 ​

说明 ​

设置同步等待模式,调用 CountDown 后会阻塞等待,但会处理消息队列,不卡UI。

语法 ​

vb
Public Function Sync() As cDelay

返回值 ​

返回自身对象,支持链式调用。

使用示例 ​

vb
Private Sub TestSync()
    Dim Delay As New cDelay
    
    Debug.Print "开始: " & Now
    Delay.Sync().CountDown 3000  ' 等待3秒
    Debug.Print "结束: " & Now   ' 3秒后执行
End Sub

⚠️ 注意事项 ​

  • 同步模式下可以通过 Cancel 方法取消等待
  • 可以通过 IsCancelled 属性判断是被取消还是正常完成
  • 等待期间会处理消息队列,UI不会卡顿

▶️ CountDown 方法 ​

说明 ​

开始倒计时。根据当前模式决定行为:

  • 事件/回调模式:启动Windows定时器
  • 同步模式:进入消息循环等待

语法 ​

vb
Public Sub CountDown(ByVal Milliseconds As Long)

参数 ​

参数类型说明
MillisecondsLong延时毫秒数

使用示例 ​

vb
' 事件模式
Delay.CountDown 5000  ' 5秒后触发 OnTime 事件

' 回调模式(需要先调用Callback)
Delay.Callback(Me, "OnDelay").CountDown 3000

' 同步模式(需要先调用Sync)
Delay.Sync().CountDown 2000

❌ Cancel 方法 ​

说明 ​

取消当前的延时操作。停止定时器并触发 OnCancel 事件。

语法 ​

vb
Public Sub Cancel()

使用示例 ​

vb
Private WithEvents Delay As cDelay

Private Sub cmdStart_Click()
    Set Delay = New cDelay
    Delay.CountDown 10000  ' 10秒延时
End Sub

Private Sub cmdCancel_Click()
    Delay.Cancel  ' 取消延时
End Sub

Private Sub Delay_OnCancel()
    Debug.Print "延时被取消"
End Sub

📌 使用场景总结 ​

延时执行操作 ​

vb
' 3秒后执行清理
Delay.Callback(Me, "DoCleanup").CountDown 3000

延时等待(保持UI响应) ​

vb
Private Sub LongOperation()
    ' 第一步
    DoStep1
    
    ' 等待2秒(UI不卡顿)
    Delay.Sync().CountDown 2000
    
    ' 第二步
    DoStep2
End Sub

可取消的延时 ​

vb
Private Sub StartDelayedTask()
    Set Delay = New cDelay
    Delay.CountDown 5000
End Sub

Private Sub CancelTask()
    If Not Delay Is Nothing Then
        Delay.Cancel
    End If
End Sub

Private Sub Delay_OnTime()
    Debug.Print "延时任务执行"
End Sub

Private Sub Delay_OnCancel()
    Debug.Print "延时任务被取消"
End Sub

最后更新: 2026-05-17

VB6及其LOGO版权为微软公司所有