public void Send(Transaction trans, TA a) { if (Firings.IsEmpty()) { trans.Last(new Runnable { Run = () => Firings.Clear() }); } Firings.Add(a); var listeners = (List <TransactionHandler <TA> >)Listeners.Clone(); foreach (TransactionHandler <TA> action in listeners) { try { action.Run(trans, a); } catch (Exception e) { Console.WriteLine(e); } } }