public void Commit(Guid transactionId) { var eventsToEmit = new List <Event>(); foreach (Aggregate aggregate in Queue) { eventsToEmit.AddRange(aggregate.GetUncommittedEvents()); SaveAggregate(aggregate, transactionId); } eventEmitter.EmitEvents(eventsToEmit); Queue = new ConcurrentQueue <Aggregate>(); //https://social.msdn.microsoft.com/Forums/en-US/accf4254-ee81-4059-9251-619bc6bbeadf/clear-a-concurrentqueue?forum=rx }