How to invoke an event or delegate handlers asynchronously Variant with the Parallel class (TPL). public void OnMyEvent( String myValue) { var multiCastDelegate = Interlocked .CompareExchange( ref MyEvent, null , null ); if (multiCastDelegate == null ) { return ; } var handlers = multiCastDelegate.GetInvocationList() .Cast< EventHandler < MyEventArgs >>(); var args = new MyEventArgs (myValue); Parallel .ForEach( handlers, handler => handler( this , args)); } Old variant with the Asynchronous delegates (APM). public void OnMyEventOld( String myValue) { var multiCastDelegate = Interlocked .CompareExc...