public static VehicleAnalysis GetVehicleAnalysis(Vehicle vehicle) { Debug.WriteLine("GetVehicleAnalysis({0}) called", vehicle.VehicleName); if (!__analysisCache.ContainsKey(vehicle)) { Debug.WriteLine("Analysis doesn't exist in the dict, generating and adding it."); __analysisCache.Add(vehicle, vehicle.GenerateVehicleAnalysis(UnitOfMeasure.DefaultDistanceUnit, UnitOfMeasure.DefaultVolumeUnit)); if (!__analysisCacheIsStale.ContainsKey(vehicle)) __analysisCacheIsStale.Add(vehicle, false); else __analysisCacheIsStale[vehicle] = false; return __analysisCache[vehicle]; } if (__analysisCacheIsStale[vehicle]) { Debug.WriteLine("Analysis for {0} is stale. Regenerating.", vehicle.VehicleName); __analysisCache[vehicle] = vehicle.GenerateVehicleAnalysis(UnitOfMeasure.DefaultDistanceUnit, UnitOfMeasure.DefaultVolumeUnit); __analysisCacheIsStale[vehicle] = false; } return __analysisCache[vehicle]; }