Understanding Delegates using Visual Basic.NET 2005 - Callbacks using Delegates
(Page 5 of 6 )
"Callback" is one of the most important features of delegates. Let us start with an example. To make things easier to understand, I added a new class as follows:
Public Class Sample04
Delegate Sub FactorFound(ByVal FactorValue As Integer)
Private _x As Integer
Public Sub New()
End Sub
Public Sub New(ByVal a As Integer)
_x = a
End Sub
Public Property X() As Integer
Get
Return _x
End Get
Set(ByVal value As Integer)
_x = value
End Set
End Property
Public Sub FindFactors(ByVal delgFoundFactor As FactorFound)
For i As Integer = 1 To _x
If _x Mod i = 0 Then
delgFoundFactor(i)
End If
Next
End Sub
End Class
The most important method from the above class is the following:
Public Sub FindFactors(ByVal delgFoundFactor As FactorFound)
For i As Integer = 1 To _x
If _x Mod i = 0 Then
delgFoundFactor(i)
End If
Next
End Sub
The method accepts a parameter of type "delegate" which is declared at module level as follows:
Delegate Sub FactorFound(ByVal FactorValue As Integer)
That means the calling program can execute the "FindFactors" method by passing the address of another method. The address, which is passed to "FindFactors," can be invoked within the same "FindFactors" method.
In simple words, the calling program executes "FindFactors" by giving permission to the "FindFactors" method to execute (internally inside "FindFactors") another method (address) passed to it.
The following sample can be considered a caller for this demonstration:
'implementing callback methods using delegates
Public Class Form6
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.ListBox1.Items.Clear()
Dim obj As New Sample04(Me.TextBox1.Text)
obj.FindFactors(AddressOf FactorAvailable)
End Sub
Private Sub FactorAvailable(ByVal FactorValue As Integer)
Me.ListBox1.Items.Add(FactorValue)
End Sub
End Class
From the above, you can observe that "FactorAvailable" is passed to the "FindFactors" method. The "FactorAvailable" method gets executed with the following statement in the "FindFactors" method:
delgFoundFactor(i)
Next: Multicast Delegates >>
More Visual Basic.NET Articles
More By Jagadish Chaterjee