Imports System
_
' FireEventArgs: a custom event inherited from EventArgs.
Public Class FireEventArgs
Inherits EventArgs
Public Sub New(room As String, ferocity As Integer)
Me.room = room
Me.ferocity = ferocity
End Sub 'New
' The fire event will have two pieces of information--
' 1) Where the fire is, and 2) how "ferocious" it is.
Public room As String
Public ferocity As Integer
End Class 'FireEventArgs
_
'end of class FireEventArgs
Public Class FireAlarm
' Events are handled with delegates, so we must establish a FireEventHandler
' as a delegate:
Delegate Sub FireEventHandler(sender As Object, fe As FireEventArgs)
' Now, create a public event "FireEvent" whose type is our FireEventHandler delegate.
Public Event FireEvent As FireEventHandler
' This will be the starting point of our event-- it will create FireEventArgs,
' and then raise the event, passing FireEventArgs.
Public Sub ActivateFireAlarm(room As String, ferocity As Integer)
Dim fireArgs As New FireEventArgs(room, ferocity)
' Now, raise the event by invoking the delegate. Pass in
' the object that initated the event (Me) as well as FireEventArgs.
' The call must match the signature of FireEventHandler.
RaiseEvent FireEvent(Me, fireArgs)
End Sub 'ActivateFireAlarm
End Class 'FireAlarm
' The following event will be the EventHandler.
Class FireHandlerClass
' Create a FireAlarm to handle and raise the fire events.
Public Sub New(fireAlarm As FireAlarm)
' Add a delegate containing the ExtinguishFire function to the class'
' event so that when FireAlarm is raised, it will subsequently execute
' ExtinguishFire.
AddHandler fireAlarm.FireEvent, AddressOf ExtinguishFire
End Sub 'New
' This is the function to be executed when a fire event is raised.
Sub ExtinguishFire(sender As Object, fe As FireEventArgs)
Console.WriteLine()
Console.WriteLine("The ExtinguishFire function was called by {0}.", sender.ToString())
' Now, act in response to the event.
If fe.ferocity < 2 Then
Console.WriteLine("This fire in the {0} is no problem. I'm going to pour some water on it.", fe.room)
Else
If fe.ferocity < 5 Then
Console.WriteLine("Using Fire Extinguisher to put out the fire in the {0}.", fe.room)
Else
Console.WriteLine("The fire in the {0} is out of control. I'm calling the fire department.", fe.room)
End If
End If 'end of class FireHandlerClass
End Sub 'ExtinguishFire
End Class 'FireHandlerClass
Public Class FireEventTest
Public Shared Sub Main()
' Create an instance of the class that will be raising the event.
Dim myFireAlarm As New FireAlarm()
' Create an instance of the class that will be handling the event. Note that
' it receives the class that will fire the event as a parameter.
Dim myFireHandler As New FireHandlerClass(myFireAlarm)
' Now, use the FireAlarm class to raise a few events.
myFireAlarm.ActivateFireAlarm("Kitchen", 3)
myFireAlarm.ActivateFireAlarm("Study", 1)
myFireAlarm.ActivateFireAlarm("Porch", 5)
Return
End Sub 'Main 'end of main
End Class 'FireEventTest ' end of FireEventTest