У меня есть проблема с асинхронным программированием.Асинхронный, два ожидаемых метода. Только один возвращает
Если вы посмотрите на этот пример:
public async void SaveUsersThings(List<User> Users)
{
await SaveUsersCars(Users);
await SaveUsersHouses(Users);
}
Так я ожидаю SaveUsersThings
выполнить следующие два метода:
public async Task SaveUsersCars(List<User> Users)
{
var listofCars = new List<Car>();
foreach (var item in Users)
{
var cars = await _sqlrepo.GetAllCars(item.UserId);
foreach (var car in cars)
{
listofCars.Add(car);
}
}
_sqlrepo.SaveListOfCars(listofCars);
}
И тогда это (идентично, как указано выше для OBJ исключением)
public async Task SaveUsersHouses(List<User> Users)
{
var listofHouses = new List<House>();
foreach (var item in Users)
{
var houses = await _sqlrepo.GetAllHouses(item.UserId);
foreach (var house in houses)
{
listofHouses.Add(house);
}
}
_sqlrepo.SaveListOfHouses(listofHouses);
}
Проблема в том, что только первый метод завершает то, что он (чтобы сохранить некоторые вещи в db). Думаю, это связано с тем, что я не совсем понимаю этот вид программирования. Может кто-нибудь объяснить, как я могу заставить оба метода «работать»?
Спасибо
Вы пробовали отлаживать? Мы не можем помочь с предоставленной информацией. Может быть, ошибка с реализацией '_sqlrepo.SaveListOfHouses'? Отлаживайте свой код и находите, где это происходит. –
Возможно, первое бросает исключение. Ваш код будет выполнять две задачи в последовательности. – Jacob
Что ... на земле ... вы делаете в этом методе? Надеюсь, вы отредактировали код, в котором вы делаете * что-то, в список объектов после их получения и перед тем, как записать их в базу данных. Потому что, черт возьми, сын. – Will