public async Task CalculateEnergyWithLoads(CO2Values co2Values) { if (!co2Values.IsSinglePoint) { if (co2Values.Low_roadload_f0.HasValue && co2Values.Low_roadload_f1.HasValue && co2Values.Low_roadload_f2.HasValue && co2Values.Low_roadload_tm.HasValue) { var roadloadF1 = Convert.ToDouble(co2Values.Low_roadload_f1); var roadloadTm = Convert.ToDouble(co2Values.Low_roadload_tm); co2Values.Low_roadload_combined = ((Convert.ToDouble(co2Values.Low_roadload_f0) * roadloadTm) / (1 - Convert.ToDouble(co2Values.Low_roadload_f1))) + ((Convert.ToDouble(co2Values.Low_roadload_f2) * roadloadTm) / (roadloadF1)); } else { co2Values.Low_roadload_combined = null; } } if (co2Values.High_roadload_f0.HasValue && co2Values.High_roadload_f1.HasValue && co2Values.High_roadload_f2.HasValue && co2Values.High_roadload_tm.HasValue) { co2Values.High_roadload_combined = CalculateEnergy(Convert.ToDouble(co2Values.High_roadload_f0), Convert.ToDouble(co2Values.High_roadload_f1), Convert.ToDouble(co2Values.High_roadload_f2), Convert.ToDouble(co2Values.High_roadload_tm)); } else { co2Values.High_roadload_combined = null; } if (co2Values.IsMidPoint && !co2Values.IsSinglePoint) { if (co2Values.Mid_roadload_f0.HasValue && co2Values.Mid_roadload_f1.HasValue && co2Values.Mid_roadload_f2.HasValue && co2Values.Mid_roadload_tm.HasValue) { co2Values.Mid_roadload_combined = ((Convert.ToDouble(co2Values.Mid_roadload_f0) * Convert.ToDouble(co2Values.Mid_roadload_tm)) / (1 - Convert.ToDouble(co2Values.Mid_roadload_f1))) + ((Convert.ToDouble(co2Values.Mid_roadload_f2) * Convert.ToDouble(co2Values.Mid_roadload_tm)) / Convert.ToDouble(co2Values.Mid_roadload_f1)); } else { co2Values.Mid_roadload_combined = null; } } await UpdateCo2Values(co2Values); }
private static async Task UpdateCo2Values(CO2Values co2Values) { // In reality this code would make a network or database call which is simulated with this sleep await Task.Run((Action)SlowAction); }