/// <summary> /// Set motor Speed between 0 and 1.0. /// </summary> /// <param name="speed"></param> void SetSpeed(double speed) { Task.Run(() => { bool worked = false; if (speed < 0) { speed = 0; } lock ( MotorLock ) { if (MotorCom.Open(MotorComPort)) { MotorCom.SetSpeed(speed); MotorCom.Close(); worked = true; } else { Console.WriteLine("failed to SetSpeed"); } } if (worked) { Action <double> update_action = (s) => { BoatSpeedLbl.Content = speed.ToString("0.00"); }; Dispatcher.BeginInvoke(update_action, speed); } }); }