async private void sendSettings() { if (InvokeRequired) { Invoke((MethodInvoker) delegate { sendSettings(); }); return; } var settings = new Service.Event("settings"); settings.data = new Service.EventData(); settings.data.enabled = Properties.Settings.Default.Enabled; settings.data.configuration = Properties.Settings.Default.Configuration; settings.data.reportDeviceName = Properties.Settings.Default.ReportDeviceName; settings.data.checkUpdates = Properties.Settings.Default.CheckUpdates; settings.data.updateChannel = Properties.Settings.Default.UpdateChannel; try { await service.SendAsync(settings).ConfigureAwait(false); } catch (Exception ex) { Debug.WriteLine("Service broadcast error: {0}", (object)ex.Message); MessageBox.Show("An error append while trying to communicate with NextDNS Windows service.", "Service Communication Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void Service_EventReceived(object sender, Service.Event e) { if (InvokeRequired) { Invoke((MethodInvoker) delegate { Service_EventReceived(sender, e); }); return; } switch (e.name) { case "open": // Called when a new instance of the app is started while an instance is already running. Show(); WindowState = FormWindowState.Normal; break; case "status": Debug.WriteLine("state {0}", (object)e.data.state); State = e.data.state; switch (State) { case StateStopped: toggle.Text = "Enable"; break; case StateStopping: toggle.Text = "Disonnecting..."; break; case StateStarting: case StateReasserting: toggle.Text = "Connecting..."; break; case StateStarted: toggle.Text = "Disable"; break; } status.Text = State; if (e.data.error != null && e.data.error != "") { MessageBox.Show(e.data.error, "NextDNS Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; default: break; } }
async private void quit_Click(object sender, EventArgs e) { if (State != StateStopped) { try { // Disconnect set flush settings on exit var settings = new Service.Event("settings"); settings.data = new Service.EventData(); settings.data.enabled = false; await service.SendAsync(settings).ConfigureAwait(false); } catch (Exception) { // Silient failure on exit } } Environment.Exit(1); }