void GetMotorHumidity() { Task.Run(() => { bool worked = false; double humidity = 0; lock ( MotorLock ) { if (MotorCom.Open(MotorComPort)) { humidity = MotorCom.GetHumidity(); MotorCom.Close(); worked = true; } else { Console.WriteLine("unable to open comport for GetMotorHumidity"); return; } } if (worked) { //TODO: handle dual humidities for MotorHumidityLbl //double MotorBoardHumidity = 0; //double BmsBoardHumidity = 0; Action <double> update_action = (h) => { MotorBoardHumidity = h; UpdateHumidityDisplay(); }; Dispatcher.BeginInvoke(update_action, humidity); } }); }