/**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; } }