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. 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
        End With

This was first published in January 2005

There are Comments. Add yours.

TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

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:

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.