Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.Runtime.InteropServices
- Public Class MsTimer
- Private Delegate Sub TimerEventDel(id As Integer, msg As Integer, user As IntPtr, dw1 As Integer, dw2 As Integer)
- Private Const TIME_PERIODIC As Integer = 1
- Private Const EVENT_TYPE As Integer = TIME_PERIODIC
- Private mAction As Action
- Private mTimerId As Integer
- Private mHandler As TimerEventDel
- <DllImport("winmm.dll")> _
- Private Shared Function timeBeginPeriod(msec As Integer) As Integer
- End Function
- <DllImport("winmm.dll")> _
- Private Shared Function timeEndPeriod(msec As Integer) As Integer
- End Function
- <DllImport("winmm.dll")> _
- Private Shared Function timeSetEvent(delay As Integer, resolution As Integer, handler As TimerEventDel, user As IntPtr, eventType As Integer) As Integer
- End Function
- <DllImport("winmm.dll")> _
- Private Shared Function timeKillEvent(id As Integer) As Integer
- End Function
- Public Sub New(action As Action, delay As Integer)
- mAction = action
- timeBeginPeriod(1)
- mHandler = New TimerEventDel(AddressOf TimerCallback)
- mTimerId = timeSetEvent(delay, 0, mHandler, IntPtr.Zero, EVENT_TYPE)
- End Sub
- Public Sub [Stop]()
- Dim err As Integer = timeKillEvent(mTimerId)
- timeEndPeriod(1)
- System.Threading.Thread.Sleep(10)
- End Sub
- Private Sub TimerCallback(id As Integer, msg As Integer, user As IntPtr, dw1 As Integer, dw2 As Integer)
- If mTimerId <> 0 Then mAction()
- End Sub
- End Class
Advertisement
Add Comment
Please, Sign In to add comment