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
Public Sub TimerFired(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
'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
.ScriptName = MyDR.Item("ScriptName")
.Frequency = myDR.Item("Frequency")
.xTimer.Interval = .Frequency * 60 * 1000
.m_Delegate = AddressOf MainProcedure
This was first published in January 2005
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.