Dynamic tasking using delegates

This tip shows how to use delegates and the timer type in a class to dynamically trigger the running of a procedure.

This tip shows how to use delegates and the timer type in a class to dynamically trigger the running of a procedure. The name of the procedure to run (ScriptName) and the frequency to run it is taken from a data file (or table). What is unique about this code is that you don't need to place a timer control in the project but can create a timer or as many as you need by creating an instance of the class (clsWork). When the timer event is fired, the mainprocedure is called using delegates.
'This is the class declaration
Public Class clsWork
    Public ScriptName As String = ""
    Public Frequency As Integer
    Public xTimer As New System.Timers.Timer
    Public Delegate Sub MyDelegate(ByVal strmessage As String)
    Public m_Delegate As MyDelegate
    Public Sub New()
        AddHandler xTimer.Elapsed, AddressOf TimerFired
    End Sub

    Public Sub TimerFired(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
        Call m_Delegate(ScriptName)
    End Sub

'This part of the code is placed in the main program
'It is based on reading the ScriptName and Frequency from a file
        Dim myWork As clsWork
        myWork = New clsWork
        With myWork
             .ScriptName = MyDR.Item("ScriptName")
             .Frequency =  myDR.Item("Frequency")
             .xTimer.Interval = .Frequency * 60 * 1000
             .m_Delegate = AddressOf MainProcedure
             .xTimer.Start()
        End With
This was first published in January 2005

Dig deeper on Win Development Resources

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

SearchCloudComputing

SearchSoftwareQuality

SearchSOA

TheServerSide

SearchCloudApplications

Close