public static void Main(string[] commandString)
using (var subscriber = new EventSubscriber(Console.WriteLine))
subscriber.EmulateEventBeingRaised();
subscriber.EmulateEventBeingRaised();
subscriber.EmulateEventBeingRaised();
subscriber.EmulateEventBeingRaised();
subscriber.EmulateEventBeingRaised();
public class EventSubscriber : IDisposable
event Action<string> CertainEvent;
Action<string> _callback;
public EventSubscriber(Action<string> callback)
if (callback == null) throw new ArgumentNullException("callback");
CertainEvent += _callback;
Console.WriteLine(CertainEvent.GetInvocationList().Length);
CertainEvent -= _callback;
Console.WriteLine(CertainEvent == null);
public void EmulateEventBeingRaised()
if (CertainEvent != null)
CertainEvent("Hey, we did it, " + counter + " times...");