public static void BroadcastRemoteCallback(Action <IServiceRemotingCallback> actionDelegate, bool newThread = false) { if (CallbackList != null && CallbackList.Count > 0) { if (newThread) { Task.Factory.StartNew(() => { BroadcastRemoteCallback(actionDelegate, false); }); } else { Action <IServiceRemotingCallback> invoke = (IServiceRemotingCallback x) => { try { actionDelegate(x); } catch (CommunicationObjectAbortedException) { CallbackList.Remove(x); } }; try { CallbackList.ForEach(invoke); } catch (CommunicationObjectAbortedException ex) { Console.WriteLine(ex.Message); } } } }