private void Disconnect() { lock (connectedTcpClientLock) { connectedTcpClient?.Close(); connectedTcpClient = null; IsConnected = false; ConnectChanged?.Invoke(this, new ConnectChangedEventArgs(false)); } }
// 해당 기기와 연결을 한다. public async void OpenDevice(string deviceName) { // 해당 deviceID를 기반으로 연결을 시도 한다. _selectedDevice = await BluetoothLEDevice.FromIdAsync(deviceName).AsTask(); // 연결 확인을 처리한다. var result = await _selectedDevice.GetGattServicesAsync(BluetoothCacheMode.Uncached); if (result.Status == GattCommunicationStatus.Success) { ConnectChanged?.Invoke(true); System.Diagnostics.Debug.WriteLine($"device Name : {deviceName} Connect..!"); // 연결 성공시 해당 기기와 Auth를 진행 한다. } else { // 연결 실패시.. ConnectChanged?.Invoke(false); System.Diagnostics.Debug.WriteLine($"device Name : {deviceName} Not Connect..!"); } }
private void Connect() { try { var connectingTcpClient = new TcpClient(); var connectTask = connectingTcpClient.ConnectAsync(remoteEndPoint.Address, remoteEndPoint.Port); connectTask.Wait(cancelConnectToken); lock (connectedTcpClientLock) { connectedTcpClient = connectingTcpClient; } IsConnected = true; ConnectChanged?.Invoke(this, new ConnectChangedEventArgs(true)); } catch (Exception ex) when(ex is OperationCanceledException || ex is AggregateException) { IsConnected = false; ConnectChanged?.Invoke(this, new ConnectChangedEventArgs(false)); } }
/// <summary> /// Triggers an event ConnectChanged. /// </summary> private void OnConnectChanged() { ConnectChanged?.Invoke(this, new ObjectChangedEventArgs(connectionOptions)); }