async Task RemoveDevice(Device device) { if (_devices.TryRemove(device.Id, out Device removedDevice)) { removedDevice.PropertyChanged -= Device_PropertyChanged; await removedDevice.ShutdownRemoteDeviceAsync(HideezErrorCode.DeviceRemoved); removedDevice.Dispose(); DevicesCollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, device)); } }
void AddDevice(DeviceDTO dto) { if (!_devices.ContainsKey(dto.Id)) { var device = new Device(_remoteDeviceFactory, _metaMessenger, dto); device.PropertyChanged += Device_PropertyChanged; if (_devices.TryAdd(device.Id, device)) { DevicesCollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, device)); } } }