public async Task Init() { var configs = await _db.Getconfig(); if (configs == null) { StatusUpdate?.Invoke(this, new HueEventArgs { Status = "Searching" }); var bridge = await GetBridge(); if (bridge == null) { StatusUpdate?.Invoke(this, new HueEventArgs { Status = "No Bridge found" }); return; } _client = new LocalHueClient(bridge.IpAddress); while (true) { StatusUpdate?.Invoke(this, new HueEventArgs { Status = "Press the Button" }); await Task.Factory.StartNew(() => Thread.Sleep(TimeSpan.FromSeconds(5))); try { var appkey = await _client.RegisterAsync("ImageHue", System.Environment.MachineName.ToString()); await _db.Setconfig(new Config { IP = bridge.IpAddress, Key = appkey }); break; } catch (Exception e) { System.Console.WriteLine(e.Message); } } StatusUpdate?.Invoke(this, new HueEventArgs { Status = "Found IP: " + bridge.IpAddress }); } else { _client = new LocalHueClient(configs.IP); _client.Initialize(configs.Key); } try { var test = await _client.GetCapabilitiesAsync(); StatusUpdate?.Invoke(this, new HueEventArgs { Status = "Connection Established" }); } catch (Exception e) { StatusUpdate?.Invoke(this, new HueEventArgs { Status = "Error, retry" }); await _db.Deleteconfig(); _initcounter++; if (_initcounter < 5) { await Init(); } } }