Я пытаюсь написать простой проект веб-API с фоновым сервисом, выполняющим метод каждую секунду.Этот метод перебирает список и просто выводит (на данный момент) некоторую статистику.Я объявил новый список в конструкторе фоновой службы.
В настоящее время я сталкиваюсь с некоторыми проблемами с добавлением и удалением элементов внутри контроллера.
public UsersController(IUserBackgroundService userService)
{
private readonly IUserBackgroundService _userService;
public UserController(IUserBackgroundService userService)
{
_userService = userservice;
}
[HttpPost]
public IActionResult PostUser(User user)
{
_userService.Add(user)
}
}
public UserService: BackgroundService, IUserService
{
private List<User> Users;
public UserService()
{
Users = new List<Users>();
}
protected override ExecuteAsync(CancellationToken token)
{
//this will execute the GenerateUserStats every second
}
//this method is being executed every second
protected Task GenerateUserStatistics()
{
Console.WriteLine($"Nr. of users {users.count}");
foreach(var user in users)
{
Console.WriteLine($"{user.fname} {user.sname}");
}
}
//add a user to the collection
// this is called by the PostUser method of my controller.
public void AddUser(User user)
{
Users.Add(user);
}
public void RemoveUser(string id)
{
var user = Users.FirstOrDefault(u => u.Id == id);
Users.Remove(user);
}
}
Я ожидаю, чтокаждый раз, когда я вызываю PostUser (), список пользователей должен увеличиваться, и мой метод GenerateStatistics () должен выводить правильные значения, вместо этого все, что он печатает, это Nr пользователей 0.
Я зарегистрировал службу как hostedserviceи синглтон.На данный момент я исключил некоторые вещи из кода, потому что у меня нет кода на этой машине.