I had to figure out how to limit firing a delegate in a multicast delegate list to a specific target. Fortunately, there's a nice property on EventHandler that does the trick. The EventHandler.Target property can be cast to the object (a Form, in the instant case) and that form's .Name property can be used to distinguish from other forms that might be subscribing to the event. Thus: foreach ( Delegate d in myEvent.GetInvocationList() ) { if ( ( ( Form )d.Target ).Name == myForm.Name ) { Util.WriteTrace( "Event target: " + ( ( Form )d.Target ).Name ); ( ( MyEventHandler )d ) .BeginInvoke( args, new AsyncCallback( OnMyEventHandlerCallback ), this ); } }