Dynamic tasking using delegates

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
             .xTimer.Start()
        End With

    Requires Free Membership to View

    When you register, you'll begin receiving targeted emails from my team of award-winning writers. Our goal is to provide a unique online resource for developers, architects and development managers tasked with building and maintaining enterprise applications using Visual Basic, C# and the Microsoft .NET platform.

    Hannah Smalltree, Editorial Director

    By submitting your registration information to SearchWinDevelopment.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchWinDevelopment.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

This was first published in January 2005

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.