private void BuyOne(User user, IEnumerable <Product> products, ReadOnlyCollection <Carrier> carriers) { List <Task> tasks = new List <Task>(); foreach (var product in products) { tasks.Add(Task.Run(() => { saleService.Buy(new Purchase { Product = product, User = user, Quantity = 1, Payment = saleService.GetModeOfPayment(), Carrier = carrierService.GetCarrier(carriers).Name, PurchasedOn = DateTime.Now }); })); } Task.WhenAll(tasks); }