/// <summary>
        /// Incrementa el contador en 1
        /// </summary>
        internal void IncreaseCounter()
        {
            if (this.isDisposed)
            {
                throw new ObjectDisposedException(Messages.ResourceDisposed);
            }

            RealCounter.Increment();
        }
        /// <summary>
        /// Registra la diferencia entre <paramref name="startTime"/> y <see cref="DateTime.Now"/>
        /// para incrementar el contador
        /// </summary>
        /// <param name="startTime">Momento inicial a comprarar</param>
        internal void RegisterTime(DateTime startTime)
        {
            if (this.isDisposed)
            {
                throw new ObjectDisposedException(Messages.ResourceDisposed);
            }

            RealCounter.IncrementBy(DateTime.UtcNow.Ticks - startTime.Ticks);
            RealCounterBase.Increment();
        }
        /// <summary>
        /// Cuando se llama a ese metodo se produce la eliminacion del objeto en memoria
        /// </summary>
        /// <param name="disposing">Si es True elimina de memoria los recursos no manejados
        /// y llama GC.SuppressFinalize( this )</param>
        protected virtual void Dispose(bool disposing)
        {
            if (disposing && !this.isDisposed)
            {
                if (RealCounter != null)
                {
                    RealCounter.Dispose();
                }
                if (RealCounterBase != null)
                {
                    RealCounterBase.Dispose();
                }

                RealCounter     = null;
                RealCounterBase = null;

                this.isDisposed = true;
            }
        }