public static void Main()
var owner = new EventOwner();
var user = new EvilEventUser(owner);
public event EventHandler SomethingHappened;
public void DoSomething()
SomethingHappened.Invoke(this, EventArgs.Empty);
public EvilEventUser(EventOwner owner)
owner.SomethingHappened += EvilOne;
owner.SomethingHappened += EvilTwo;
owner.SomethingHappened += WillBeNeverCalled;
public void EvilOne(object sender, EventArgs args)
public void EvilTwo(object sender, EventArgs args)
System.Threading.Thread.Sleep(int.MaxValue);
public void WillBeNeverCalled(object sender, EventArgs args)
System.Threading.Thread.Sleep(int.MaxValue);