private void SafeInvokeMessageRecevied(MessageReceivedEventArgs eventArgs) { if (RemoteMessage == null) { return; //No Listeners } MessageReceivedEvent listener = null; Delegate[] dels = RemoteMessage.GetInvocationList(); foreach (Delegate del in dels) { try { listener = (MessageReceivedEvent)del; listener.Invoke(eventArgs); } catch (Exception) { //Could not reach the destination, so remove it //from the list RemoteMessage -= listener; } } }