예제 #1
0
        public ICar GetCar(CarMakeEnum make, string color)
        {
            List <Task <ICar> > tasks = new List <Task <ICar> >();

            foreach (var kvp in carRepo)
            {
                tasks.Add(Task <ICar> .Factory.StartNew(() => CarCompare(kvp.Value, Car.GetCarIdentity(make, color))));
            }

            Task.WaitAll(tasks.ToArray());

            foreach (var taskResult in tasks)
            {
                if (taskResult.Result != null)
                {
                    return(taskResult.Result);
                }
            }

            var car = new Car(make, color);

            carRepo.Add(car.IntrinsicIdentifier, car);
            return(car);
        }
예제 #2
0
 public static string GetCarIdentity(CarMakeEnum make, string color)
 {
     return($"{make.ToString()}{color}");
 }
예제 #3
0
 public Car(CarMakeEnum make, string color)
 {
     CarMake = make;
     Color   = color;
 }