/// <summary> /// The Event Marshal. /// </summary> public void EventMarshal(IMyEventActions sender, MyEventArgs e) { if (null != sender) { if (sender.Event.InvokeRequired) { sender.Event.BeginInvoke( new OnSomethingHappenedDel(sender.OnSomethingHappened), new object[] { e }); } else { sender.OnSomethingHappened(e); } } //If you require recursion, you need to do this... Recurse(e); }
/// <summary> /// The Event Marshal. /// </summary> public void EventMarshal(IMyEventActions sender, MyEventArgs e) { if (sender.Event.InvokeRequired) { //Without the lock in Fire() a race condition would occur //here when one thread closes the MyEvent form and another //tries to Invoke it. sender.Event.BeginInvoke( new OnSomethingHappenedDel(sender.OnSomethingHappened), new object[] { e }); } else { sender.OnSomethingHappened(e); } if (SiblingEvents.Count > 0) { Recurs(e); } }