У меня есть проект в работе, который требует выборки данных для более чем 300 пользователей через REST API, и пользователь не может продолжать использовать приложение должным образом, пока не будут получены все эти данные.В идеале я хотел бы запускать метод FetchUserDetails для каждого элемента в списке одновременно и обновлять каждую запись при возвращении подробностей.
Примечание. Чтобы предотвратить блокирование потока пользовательского интерфейса, эта функциональность вложена вФоновый рабочий.
Мой класс User выглядит примерно так:
public class User
{
public List<string> Details { get; set; }
}
Внутри фонового рабочего у меня есть следующие функциональные возможности:
List<User> users; // List of 300+ users
Parallel.ForEach(users, user =>
{
user.Details = FetchUserDetails(user);
});
И метод FetchUserDetails,не вдаваясь в подробности из-за ограничений NDA:
private List<string> FetchUserDetails(User inputUser)
{
// Long running, nested API calls that take over 50 seconds
return List<string>;
}
Есть ли способ запустить метод для каждой из 300+ записей одновременно, чтобы значительно сократить время, необходимое для извлечения данных.