Пример #1
0
    public override async Task ProcessAsync()
    {
        using (SemaphoreSlim semaphore = new SemaphoreSlim(4))
        {
            foreach (string fileName in _fileSystem.GetFileNames(_directory))
            {
                System.Console.WriteLine($"Processing {fileName}...");
                using (IVehicleProvider inputRepository = GetVehicleProvider(fileName))
                {
                    List <Task> tasks = new List <Task>();
                    foreach (IVehicle vehicle in inputRepository.GetVehicles())
                    {
                        await semaphore.WaitAsync();

                        tasks.Add(Task.Run(async() =>
                        {
                            try
                            {
                                Truck truck = await TransformAsync(vehicle);
                                truck       = await DoubleDoorsAsync(truck);

                                await SaveTruckAsync(truck);
                            }
                            finally
                            {
                                semaphore.Release();
                            }
                        }));
                    }
                    await Task.WhenAll(tasks);
                }
            }
        }
    }
Пример #2
0
 private IEnumerable <IVehicle> GetVehicles(string fileName)
 {
     System.Console.WriteLine($"Processing {fileName}...");
     using (IVehicleProvider repository = GetVehicleProvider(fileName))
     {
         foreach (var vehicle in repository.GetVehicles())
         {
             yield return(vehicle);
         }
     }
 }
Пример #3
0
        public override async Task ProcessAsync()
        {
            foreach (string fileName in _fileSystem.GetFileNames(_directory))
            {
                System.Console.WriteLine($"Processing {fileName}...");
                using (IVehicleProvider inputRepository = GetVehicleProvider(fileName))
                {
                    foreach (IVehicle vehicle in inputRepository.GetVehicles())
                    {
                        Truck truck = await TransformAsync(vehicle);

                        truck = await DoubleDoorsAsync(truck);

                        await SaveTruckAsync(truck);
                    }
                }
            }
        }