private static Task GenerateTrackerTask() { return(new Task(async() => { tracker_active = true; while (tracker_active) { try { address = await KEL103Tools.FindLoadAddress(); tracker_init_complete = true; //do work using (UdpClient client = new UdpClient(KEL103Persistance.Configuration.CommandPort)) { KEL103Tools.ConfigureClient(address, client); KEL103StateTracker.client = client; while (tracker_active) { Stopwatch q = new Stopwatch(); q.Start(); CheckoutClient(); var kel_state = new KEL103State(); var voltage = await KEL103Command.MeasureVoltage(client); var current = await KEL103Command.MeasureCurrent(client); var power = await KEL103Command.MeasurePower(client); var input_state = await KEL103Command.GetLoadInputSwitchState(client); var time_stame = DateTime.Now; CheckinClient(); q.Stop(); var retreval_span = TimeSpan.FromTicks(q.ElapsedTicks); kel_state.Voltage = voltage; kel_state.Current = current; kel_state.Power = power; kel_state.TimeStamp = time_stame; kel_state.InputState = input_state; kel_state.ValueAquisitionTimespan = retreval_span; NewKEL103StateAvailable(kel_state); //await Task.Delay(10); } } } catch (Exception ex) { } } })); }