Sometimes I just need a function which will execute something after a specified period of time. In JavaScript, this is extremely easy using setTiimeout. I miss this in VB.NET, so I implemented my own function to do this
Use (it will show Hello world! in 3 seconds:Code:Module Timeout Friend timers As New Dictionary(Of Integer, Timer) Friend threads As New Dictionary(Of Integer, [Delegate]) Friend forms As New Dictionary(Of Integer, Form) Friend paramarrays As New Dictionary(Of Integer, Object()) Sub setTimeout(ByRef form As Form, ByVal method As [Delegate], ByVal time As Integer, ByVal ParamArray args As Object()) Dim v = (New Random).Next(0, Integer.MaxValue) Dim t As New Timer t.Enabled = True t.Interval = time t.Tag = v AddHandler t.Tick, AddressOf continuetimer timers.Add(v, t) threads.Add(v, method) forms.Add(v, form) paramarrays.Add(v, args) End Sub Sub continuetimer(ByVal sender As Timer, ByVal e As EventArgs) Dim ct As New EventHandler(AddressOf continuetimer) RemoveHandler sender.Tick, ct Dim v = sender.Tag sender.Enabled = False timers.Remove(v) forms(v).Invoke(threads(v), paramarrays(v)) threads(v) = Nothing threads.Remove(v) sender.Dispose() End Sub End Module
Code:Sub example(text) MsgBox(text) End Sub setTimeout(Me, New Action(AddressOf example), 3000, "Hello world!")





Reply With Quote