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版权为微软公司所有