Imports System.ComponentModel
Imports System.Threading
<DefaultEvent("Tick")> _
Public Class FastTimer
Inherits System.ComponentModel.Component
Public Event Tick(ByVal e As Integer)
Public Event LetterTick(letter As String)
Private _started As Boolean = False
Public Property Speed As State = State.Fastest
Public Property CountStyle As CountStyleState = CountStyleState.Up
Public Property CountValueType As CountValueState
Public Enum State
Fastest = 0
Fast = 1
Normal = 2
Slow = 3
Slowest = 4
End Enum
Public Enum CountValuestate
Numbers
Letters
End Enum
Public Enum CountStyleState
Up = 0
Down = 1
End Enum
Public Sub [Stop]()
_started = False
ticks = 0
End Sub
Public Sub Enable()
_started = True
End Sub
Public Property Interval As Integer = 1
Dim ticks As Integer = 0
Dim Cletter As Letter = Letter.Z
Public Sub Start()
While (_started)
If CountValueType = CountValuestate.Numbers Then
If CountStyle = CountStyleState.Up Then
ticks += 1 + Interval
ElseIf CountStyle = CountStyleState.Down Then
ticks -= 1 + Interval
End If
checkstate(Speed)
RaiseEvent Tick(ticks)
Else
If CountStyle = CountStyleState.Up Then
checkletter()
checkstate(Speed)
RaiseEvent LetterTick([Enum].GetName(GetType(Letter), Cletter))
End If
End If
End While
End Sub
Sub checkletter()
Select Case Cletter
Case Letter.A
Cletter = Letter.B
Case Letter.B
Cletter = Letter.C
Case Letter.C
Cletter = Letter.D
Case Letter.D
Cletter = Letter.E
Case Letter.E
Cletter = Letter.F
Case Letter.F
Cletter = Letter.G
Case Letter.G
Cletter = Letter.H
Case Letter.H
Cletter = Letter.I
Case Letter.I
Cletter = Letter.J
Case Letter.J
Cletter = Letter.K
Case Letter.K
Cletter = Letter.L
Case Letter.L
Cletter = Letter.M
Case Letter.M
Cletter = Letter.N
Case Letter.N
Cletter = Letter.O
Case Letter.O
Cletter = Letter.P
Case Letter.P
Cletter = Letter.Q
Case Letter.Q
Cletter = Letter.R
Case Letter.R
Cletter = Letter.S
Case Letter.S
Cletter = Letter.T
Case Letter.T
Cletter = Letter.U
Case Letter.U
Cletter = Letter.V
Case Letter.V
Cletter = Letter.W
Case Letter.W
Cletter = Letter.X
Case Letter.X
Cletter = Letter.Y
Case Letter.Y
Cletter = Letter.Z
Case Letter.Z
Cletter = Letter.A
End Select
Application.DoEvents()
End Sub
Sub checkstate(ByVal states As State)
Select Case states
Case State.Fastest
Thread.Sleep(0)
Case State.Fast
Thread.Sleep(100)
Case State.Normal
Thread.Sleep(1000)
Case State.Slow
Thread.Sleep(10000)
Case State.Slowest
Thread.Sleep(100000)
Case Else
Thread.Sleep(0)
End Select
Application.DoEvents()
End Sub
Public Enum Letter
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
End Enum
End Class