我收到错误"在类型"的垃圾收集委托上进行了回调。使用此代码,但我似乎无法找到解决方案。
<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
答案 0 :(得分:1)
尝试将mHandler
转换为类成员(例如私有字段),因为它当前限定为OnLoadit
方法,以便在执行mHandler
后可以通过GC收集时刻。