/**m* SCardReaderList/StopMonitor
         *
         * NAME
         *   SCardReaderList.StopMonitor()
         *
         * DESCRIPTION
         *   Stop the background thread previously launched by SCardReaderList.StartMonitor().
         *
         **/
        public void StopMonitor()
        {
            _status_change_callback = null;
            _status_change_running  = false;

            if (_status_change_thread != null)
            {
                if (_status_change_context != IntPtr.Zero)
                {
                    SCARD.Cancel(_status_change_context);
                }
                else
                {
                    _status_change_thread.Interrupt();
                }
                _status_change_thread.Join();
                _status_change_thread = null;
            }
        }