public IAsyncOperation <bool> connect(string device_id, IoTizeDisconnectionCallback callback) { Context.StopEnumeration(); _disconnectionCallback = callback; if (connectionState == ConnectionState._inConnection) { Log.WriteLine("~~~~Wait for Connecting"); return(Task.Run(() => doWaitConnection()) .AsAsyncOperation()); } else { connectionState = ConnectionState._inConnection; Log.WriteLine("\n--->Start Connecting"); return(Task.Run(() => doStartConnection(device_id)) .AsAsyncOperation()); } }
private async Task <bool> doStartDisConnection(string device_id) { bool successfull = false; lastError = ""; //step 1: connect to device try { if (SelectedDevice != null) { SelectedDevice.PropertyChanged -= SelectedDevice_PropertyChanged; _disconnectionCallback = null; successfull = await SelectedDevice.Disconnect(); IsDeviceConnected = !successfull; } } catch (Exception e) { lastError = "Exception in disconnection " + e.Message; Log.WriteLine("!!!" + lastError); connectionState = ConnectionState._error; return(false); } if (successfull == false) { lastError = "Failed in disconnection " + device_id; Log.WriteLine("!!!" + lastError); connectionState = ConnectionState._error; return(false); } lastError = "Successfull disconnection"; SelectedDevice = null; connectionState = ConnectionState._connected; Log.WriteLine("<---" + lastError); return(true); }