AdapterLib.HueBridgeDevice.UpdateDeviceList C# (CSharp) Method

UpdateDeviceList() private method

private UpdateDeviceList ( ) : void
return void
        private async void UpdateDeviceList()
        {
            try
            {
                var lights = (await _client.GetLightsAsync()).ToList();
                //Report all lost lights
                HueBulbDevice[] devices;
                lock(_devicesLock)
                    devices = _devices.ToArray();
                foreach (var device in devices)
                {
                    if (!lights.Where(l => l.UniqueId == device.Light.UniqueId).Any())
                    {
                        //Light no longer available
                        lock(_devicesLock)
                            _devices.Remove(device);
                        NotifyDeviceRemoval?.Invoke(this, device);
                    }
                }
                var serial = (_client as LocalHueClient2).BridgeSerial;
                //Report all newly found lights
                lock (_devicesLock)
                    devices = _devices.ToArray();
                foreach (var light in lights)
                {
                    if (!devices.Where(l => l.Light.UniqueId == light.UniqueId).Any())
                    {
                        var device = new HueBulbDevice(_client, light, serial);
                        lock (_devicesLock)
                            _devices.Add(device);
                        NotifyDeviceArrival?.Invoke(this, device);
                    }
                }
            }
            catch { }
            if(CheckForLightsTimer == null)
                CheckForLightsTimer = new System.Threading.Timer((s) => UpdateDeviceList(), null,
                    (int)TimeSpan.FromMinutes(1).TotalMilliseconds,
                    (int)TimeSpan.FromMinutes(1).TotalMilliseconds);
        }