delegate void MessageHandler(string message);
class DelegatesEvents
{
static event MessageHandler MessageArrived;
static void Main()
{
// explicit delegate construction
new MessageHandler(MyHandler);
// implicit delegate construction
MessageHandler handler = MyHandler;
// subscribe to an event
MessageArrived += MyHandler;
// raise the event
MessageArrived("Test message");
// unsubscribe from the event
MessageArrived -= MyHandler;
// Throws a null reference exception as there are no subscribers
MessageArrived("Test message 2");
// Safely raising an event
MessageHandler handler2 = MessageArrived;
if (handler2 != null)
{
handler2("Safe message");
}
}
static void MyHandler(string message)
{
System.Console.WriteLine(message);
}
}
|
delegate-id MessageHandler (str as string).
end delegate.
class-id DelegatesEvents.
01 MessageArrived event type MessageHandler static.
method-id Main static.
*> explicit delegate construction
invoke new MessageHandler(MyHandler)
*> implicit delegate construction
declare handler as type MessageHandler = method MyHandler
*> subscribe to an event
attach method MyHandler to MessageArrived
*> raise the event
invoke MessageArrived("Test message")
*> unsubscribe from the event
detach method MyHandler from MessageArrived
*> Throws a null reference exception as there are no subscribers
invoke MessageArrived("Test message 2")
*> Safely raising an #event
declare handler2 as type MessageHandler = MessageArrived
if handler2 not equals null
invoke handler1("Safe message")
end-if
end method.
method-id MyHandler static (str as string).
display str
end method.
end class.
|
Delegate Sub MessageHandler(ByVal message As String)
Class DelegatesEvents
Shared Event MessageArrived As MessageHandler
Shared Sub Main()
' explicit delegate construction
new MessageHandler(AddressOf MyHandler)
' implicit delegate construction
Dim messageHandler As MessageHandler = AddressOf MyHandler
' subscribe to an event
AddHandler MessageArrived, AddressOf MyHandler
' fire the event
RaiseEvent MessageArrived("Test message")
' unsubscribe from the event
RemoveHandler MessageArrived, AddressOf MyHandler
' Deosn't throw an exception, even when there are no subscribers
RaiseEvent MessageArrived("Test message 2")
End Sub
Shared Sub MyHandler(message As String)
System.Console.WriteLine(message)
End Sub
End Class
|