Сделайте интерфейс отзывчивым, преобразовав вызовы базы данных в асинхронные вызовы в EF
Я использую новый доступ к данным в универсальной платформе Windows. Я могу получить данные, но проблема в том, что поисковый код является синхронным по своей природе, приложение Windows перестает отвечать до тех пор, пока не будет получен полный список. Так как его привязали к ObservableCollection
, Пользовательский интерфейс обновляется, как только список получен.
public List<Brand> retrieveBrands()
{
List<Brand> brandList = new List<Brand>();
using (var db = new CarDataContext())
{
brandList = db.Brands.ToList();
}
return brandList;
}
Но теперь, поскольку между поиском списка есть временная задержка, пользовательский интерфейс перестает отвечать на запросы в течение нескольких секунд. Как я могу сделать этот поиск асинхронным / сделать мой метод асинхронным, чтобы, как только список был восстановлен, я смог получить задачу. Заполненное уведомление и пользовательский интерфейс остаются отзывчивыми.
Мой вопрос почти похож на тот, что задавался здесь, но поскольку ответа нет, я отправляю вопрос.
1 ответ
Вы можете попробовать что-то вроде этого
public Task<List<Brand>> retrieveBrands()
{
return Task.Run(()=>
{
List<Brand> brandList = new List<Brand>();
sing (var db = new CarDataContext())
{
brandList = db.Brands.ToList();
}
return brandList;
});
}