It is very simple to raise events in dotnet/C#.
But there is a caveat one should be aware of; especially since it probably will show itself intermittently and be hard to track down. It is when someone finishes his listening for the event between the does-someone-listen-for-the-event and the very firing.
The good news is that it is easily solved by a temporary variable like so:
internal event NavigateDelegate OnNavigate;
internal delegate void NavigateDelegate( NavigateTypes navigateType );
private void Raise_OnNavigate(NavigateTypes navigateType)
NavigateDelegate tempEvent = OnNavigate;
if (null != tempEvent)
If the above is hard to remember there is a snippet
to use. Just write it at a line and press Tab.