public void StartCharge(EnumAddressDirection chargeDirection) { Task.Run(() => { try { SpinWait.SpinUntil(() => false, 2000); IsCharging = true; OnUpdateChargeStatusEvent?.Invoke(this, IsCharging); while (BatteryStatus.Percentage < 100 && IsCharging) { SpinWait.SpinUntil(() => false, 2000); BatteryStatus.Percentage = Math.Min(BatteryStatus.Percentage + 10, 100); OnUpdateBatteryStatusEvent?.Invoke(this, BatteryStatus); } } catch (Exception ex) { OnLogErrorEvent?.Invoke(this, new MessageHandlerArgs() { ClassMethodName = GetType().Name + ":" + System.Reflection.MethodBase.GetCurrentMethod().Name, Message = ex.Message }); } SpinWait.SpinUntil(() => false, 2000); IsCharging = false; OnUpdateChargeStatusEvent?.Invoke(this, IsCharging); }); }
private void btnStartCharge_Click(object sender, EventArgs e) { try { EnumAddressDirection chargeDirection = (EnumAddressDirection)boxChargeDirection.SelectedItem; asePackage.StartCharge(chargeDirection); } catch (Exception ex) { LogException(GetType().Name + ":" + MethodBase.GetCurrentMethod().Name, ex.Message); } }
public void StartCharge(EnumAddressDirection chargeDirection) { if (!LocalPackage.MainFlowHandler.localData.MIPCData.Charging) { Task.Run(() => { LocalPackage.MainFlowHandler.StartChargingByAddressID(Vehicle.Instance.MoveStatus.LastAddress.Id); SpinWait.SpinUntil(() => LocalPackage.MainFlowHandler.localData.MIPCData.Charging, 30 * 1000); OnUpdateChargeStatusEvent?.Invoke(this, LocalPackage.MainFlowHandler.localData.MIPCData.Charging); }); } else { OnUpdateChargeStatusEvent?.Invoke(this, LocalPackage.MainFlowHandler.localData.MIPCData.Charging); } }