public virtual void CanAddMultipleDomainEventsToSingleEventProviderConcurrentlyAsync(int i) { var command = new Create(SequentialAtEndGuidGenerator.NewGuid(), i); var domainEvents = AccountAggregateRoot.Create(command); domainEvents.AggregateRoot.State.ExternalStateTracker = GetStateTracker(domainEvents); Repository.Commit(new CommandHandlerContext(command), domainEvents.AggregateRoot as AccountAggregateRoot); var account = Repository.GetByIdentity(domainEvents.AggregateRoot.Identity); Assert.IsNotNull(account); var ch = new SynchronizedAggregateRootCommandHandler <AccountAggregateRoot, Deposit>(Repository, new AggregateRootSynchronizer(new AggregateRootSynchronizationCache()), new AggregateRootCache()); var tasks = new Task[10]; for (var j = 0; j < 10; j++) { tasks[j] = ch.HandleAsync(new CommandHandlerContext(new Deposit(account.Identity, j))); } try { Task.WaitAll(tasks); } catch (Exception e) { Assert.Fail(e.ToString()); } }