单一代理:
Module Module1
Public Delegate Sub basicdeleg(ByVal st As String)
Sub Main()
Dim d1 As New deleg()
Dim DG1, DG2 As basicdeleg
DG1 = AddressOf d1.eventchar
DG2 = AddressOf d1.eventmess
DG1("this char console message !")
DG2("THIS CHAR WILL SHOW ON MESSAGE BOX !")
End Sub
Public Class deleg
Public Sub eventchar(ByVal st As String)
Console.WriteLine("delegate sucessfully !" & st)
End Sub
Public Sub eventmess(ByVal st As String)
MsgBox("delegate successfully ! " & st)
End Sub
End Class
End Module
一对多代理:
Module Module1
Sub Main()
Dim DC1 As New DelegateCenter()
DC1.DelReg(AddressOf delevent1, True)
DC1.DelReg(AddressOf delevent2, False)
DC1.DelReg(AddressOf delevent3, True)
DC1.exefunc(300)
Console.ReadLine()
End Sub
Public Sub delevent1(ByVal st As String)
Console.WriteLine("delegate event 1 will be start !")
End Sub
Public Sub delevent2(ByVal st As String)
Console.WriteLine("delegate event 2 will be start !")
End Sub
Public Sub delevent3(ByVal st As String)
Console.WriteLine("delegate event 3 will be start !")
End Sub
Public Class DelegateCenter
Public Delegate Sub INRegFunc(ByVal st As String)
Private m_customer As INRegFunc
Public Sub DelReg(ByVal DG1 As INRegFunc, ByVal decrib As Boolean)
If decrib Then
m_customer = CType(System.Delegate.Combine(m_customer, DG1), INRegFunc)
End If
End Sub
Public Sub exefunc(ByVal st As String)
m_customer("run successfully ...")
End Sub
End Class
End Module