Esempio n. 1
0
        private static void _ExecuteAllDomainEventHandlers(DelayedDomainEventHandlingItems delayedDomainEventHandlingItems)
        {
            try
            {
                while (delayedDomainEventHandlingItems.Any())
                {
                    _executeOneHandler();
                }
            }
            finally
            {
                delayedDomainEventHandlingItems.Each(x => _domainEventHandlerFactory.Release(x.DomainEventHandler));
            }

            void _executeOneHandler()
            {
                var delayedDomainEventHandlingItem = delayedDomainEventHandlingItems.Dequeue();

                try
                {
                    delayedDomainEventHandlingItem.DomainEventHandlingAction();
                }
                finally
                {
                    _domainEventHandlerFactory.Release(delayedDomainEventHandlingItem.DomainEventHandler);
                }
            }
        }
 public void Raise <TEvent>(TEvent e) where TEvent : IDomainEvent
 {
     foreach (var handler in _handlerFactory.Get <TEvent>())
     {
         handler.Handle(e);
         _handlerFactory.Release(handler);
     }
 }