/// <summary>
        /// Call the card removed delegate for each changed reader
        /// </summary>
        /// <param name="state">State class containing the smartcard reader name</param>
        private void FireCardRemovedEvent(SmartcardInterop.ScardReaderState state)
        {
            if (this.DebounceState(state.reader, CardEvent.Remove))
            {
                return;
            }

            var args = new SmartcardEventArgs(null, state.reader);

            this.logger.DebugFormat("Firing card removed event for reader {0}", state.reader);
            this.OnCardRemoved?.Invoke(this, args);
        }
        /// <summary>
        /// Call the card detected delegate for each changed reader
        /// </summary>
        /// <param name="state">State class containing the smartcard reader name</param>
        private void FireCardPresentEvent(SmartcardInterop.ScardReaderState state)
        {
            if (this.DebounceState(state.reader, CardEvent.Insert))
            {
                return;
            }

            var cardname = this.FindCardWithAtr(state.atr);
            var scard    = new Smartcard(state.reader, cardname);
            var args     = new SmartcardEventArgs(scard, state.reader);

            this.logger.DebugFormat("Firing card insert event for reader {0}, card {1}", state.reader, cardname);
            this.OnCardInserted?.Invoke(this, args);
        }