/**m* SCardReaderList/StartMonitor * * NAME * SCardReaderList.StartMonitor() * * SYNOPSIS * SCardReaderList.StartMonitor(SCardReaderList.StatusChangeCallback callback); * * DESCRIPTION * Create a background thread to monitor the reader associated to the object. * Everytime the status of the reader is changed, the callback is invoked. * * SEE ALSO * SCardReaderList.StatusChangeCallback * SCardReaderList.StopMonitor() * **/ public void StartMonitor(StatusChangeCallback callback) { StopMonitor(); if (callback != null) { _status_change_callback = callback; _status_change_thread = new Thread(StatusChangeMonitor); _status_change_running = true; _status_change_thread.Start(); } }
/**m* SCardReader/StopMonitor * * NAME * SCardReader.StopMonitor() * * DESCRIPTION * Stop the background thread previously launched by SCardReader.StartMonitor(). * **/ public void StopMonitor() { _status_change_callback = null; _status_change_running = false; if (_status_change_thread != null) { _status_change_thread.Interrupt(); _status_change_thread.Join(); _status_change_thread = null; } }
private void Deduplicator_StatusChangeEvent(Status newStatus) { if (this.InvokeRequired) { StatusChangeCallback d = new StatusChangeCallback(Deduplicator_StatusChangeEvent); this.Invoke(d, new object[] { newStatus }); } else { this.SetText(newStatus.ToString(), this.StatusLabel); this.EnableIdleState(); } }
/**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; } }
/**m* SCardReader/StopMonitor * * NAME * SCardReader.StopMonitor() * * DESCRIPTION * Stop the background thread previously launched by SCardReader.StartMonitor(). * **/ public void StopMonitor() { _status_change_callback = null; _status_change_running = false; if (_status_change_thread != null) { _status_change_thread.Abort(); _status_change_thread.Join(); _status_change_thread = null; } }
/**m* SCardReader/StartMonitor * * NAME * SCardReader.StartMonitor() * * SYNOPSIS * SCardReader.StartMonitor(SCardReader.StatusChangeCallback callback); * * DESCRIPTION * Create a background thread to monitor the reader associated to the object. * Everytime the status of the reader is changed, the callback is invoked. * * SEE ALSO * SCardReader.StatusChangeCallback * SCardReader.StopMonitor() * **/ public void StartMonitor(StatusChangeCallback callback) { StopMonitor(); if (callback != null) { _status_change_callback = callback; _status_change_thread = new Thread(StatusChangeMonitor); _status_change_running = true; _status_change_thread.Start(); } }