using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace eventTest { public class MyPublisher { public event EventHandler RaiseCustomEvent; public void DoEvent() { EventHandler handler = RaiseCustomEvent; if (handler != null) { handler(this,new EventArgs() ); } } } public class MySubscriber { private MyPublisher _Pub; public string Name { get; set; } public MySubscriber(MyPublisher pub, string name) { _Pub = pub; Name = name; _Pub.RaiseCustomEvent += new EventHandler(_Pub_RaiseCustomEvent); _Pub.RaiseCustomEvent += new EventHandler(_Pub_RaiseCustomEvent); } void _Pub_RaiseCustomEvent(object sender, EventArgs e) { Console.WriteLine("Event in "+Name); } public void UnSub() { _Pub.RaiseCustomEvent -= new EventHandler(_Pub_RaiseCustomEvent); } } class Program { static void Main(string[] args) { MyPublisher pub = new MyPublisher(); Console.WriteLine("Start..."); MySubscriber sub1 = new MySubscriber(pub, "Sub 1"); MySubscriber sub2 = new MySubscriber(pub, "Sub 2"); pub.DoEvent(); // 4 calls to event handler in subscriber Console.WriteLine("UnSub..."); sub2.UnSub(); // Single unsubscribe from event in sub2 pub.DoEvent(); // 3 calls to event handler in subscriber Console.ReadLine(); } } }Not sure what your code is looking like but if you toss the above into a console app you can play with it.