/**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();
            }
        }
示例#2
0
        /**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();
              }
        }