private void CancelAllThreads()
        {
            try
            {
                if (_connectThread != null)
                {
                    _connectThread.Cancel();
                    _connectThread = null;
                }

                if (_transferOutThread != null)
                {
                    _transferOutThread.Cancel();
                    _transferOutThread = null;
                }

                if (_transferInThread != null)
                {
                    _transferInThread.Cancel();
                    _transferInThread = null;
                }

                if (_acceptThread != null)
                {
                    _acceptThread.Cancel();
                    _acceptThread = null;
                }

                RemoteDevice = null;
            }
            catch (Exception e)
            {
                SAMLog.Error("ABTA::CAT", e);
            }
        }
        public void Connect(BluetoothDevice device)
        {
            CancelAllThreads();

            try
            {
                _connectThread = new BTConnectThread(device, this);
                _connectThread.Start();
            }
            catch (Exception e)
            {
                SAMLog.Error("ABTA::CantCreateConnectThread", e);
                State = BluetoothAdapterState.Error;
                CancelAllThreads();
                return;
            }

            State = BluetoothAdapterState.Connecting;
        }
 public void SetConnectThreadCancelled()
 {
     _connectThread = null;
 }