private void DisconnectFromInterface(bool showDialog) { _targetConnectionState = ConnectionState.Disconnected; // Do the disconnection on a separate thread GenericAsyncTask task = new GenericAsyncTask(); if (showDialog) { InitializeDisconnectingDialog(); _disconnectingDialog.Show(); task.ExecutionFinished += delegate { _disconnectingDialog.Dismiss(); Finish(); }; } task.Execute(() => { if (_targetConnectionState == ConnectionState.Disconnected) { if (FtInterfaceInstanceProvider.Instance != null && FtInterfaceInstanceProvider.Instance.CanSendCommand()) { // Stop the online mode and disconnect FtInterfaceInstanceProvider.Instance.StopOnlineMode(); FtInterfaceInstanceProvider.Instance.Disconnect(); // Cleanup the instance FtInterfaceInstanceProvider.Instance.Dispose(); FtInterfaceInstanceProvider.Instance = null; } } }); }
private void ConnectToFtInterface() { if (FtInterfaceInstanceProvider.Instance.Connection == ConnectionStatus.NotConnected) { _targetConnectionState = ConnectionState.Connected; // Show the connecting dialog InitializeConnectingDialog(); _connectingDialog.Show(); // The connecting process is done on a separate thread GenericAsyncTask task = new GenericAsyncTask(); task.Execute(() => { if (_targetConnectionState == ConnectionState.Connected) { FtInterfaceInstanceProvider.Instance?.Connect(FtInterfaceInstanceProvider.Ip); FtInterfaceInstanceProvider.Instance?.StartOnlineMode(); } }); } }