/// <summary>
        ///     This method removes any event notifiers that have timed out.
        /// </summary>
        private void RemoveTimedOutTransactionEventNotifiers( )
        {
            var notifiersToRemove = new List <string>( );

            lock ( _syncRoot )
            {
                foreach (var kvp in _transactionEventNotifiers)
                {
                    string id = kvp.Key;
                    TransactionEventNotifier eventNotifier = kvp.Value;

                    if (eventNotifier.HasTimedOut(_timeOutIntervalSeconds))
                    {
                        eventNotifier.Enabled = false;
                        notifiersToRemove.Add(id);
                    }
                }
            }

            foreach (string id in notifiersToRemove)
            {
                Rollback(id);

                lock ( _syncRoot )
                {
                    _transactionEventNotifiers.Remove(id);
                }
            }
        }