void GetMotorTemp() { Task.Run(() => { bool worked = false; double temperature = 0; lock ( MotorLock ) { if (MotorCom.Open(MotorComPort)) { temperature = MotorCom.GetTemp(); MotorCom.Close(); worked = true; } else { Console.WriteLine("unable to open comport for GetMotorTemp"); return; } } if (worked) { //TODO: handle dual humidities for MotorHumidityLbl Action <double> update_action = (t) => { MotorBoardTempLbl.Content = "MOTOR BOARD TEMP: " + t.ToString("0.00") + "C/F?"; }; Dispatcher.BeginInvoke(update_action, temperature); } }); }