收集回调垃圾的问题

Issue with callback garbage collected

我在使用此代码时收到错误 "A callback was made on a garbage collected delegate of type",但我似乎找不到解决方案。

<DllImport("winmm.dll")>
Private Shared Function timeSetEvent(delay As Integer, resolution As Integer, handler As TimerEventHandler, user As IntPtr, eventType As Integer) As Integer
End Function

<DllImport("winmm.dll")>
Private Shared Function timeBeginPeriod(millisecond As Integer) As Integer
End Function

Private Sub OnLoadit()
    timeBeginPeriod(1)
    Dim mHandler As New TimerEventHandler(AddressOf TimerCallback)
    Dim mTimerId As Integer = timeSetEvent(4, 0, mHandler, IntPtr.Zero, 1)
End Sub

Private Delegate Sub TimerEventHandler(id As Integer, msg As Integer, user As IntPtr, dw1 As Integer, dw2 As Integer)
Private Sub TimerCallback(id As Integer, msg As Integer, user As IntPtr, dw1 As Integer, dw2 As Integer)
    'my function code here
End Sub

尝试将 mHandler 转换为 class 成员(例如私有字段),因为目前它的作用域是 OnLoadit 方法,以便在执行后 mHandler 可以目前通过 GC 收集。