コード例 #1
0
        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);
        }
コード例 #2
0
 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);
 }