В приложении Xamarin у меня периодически возникает проблема, из-за которой оно закрывается из ниоткуда. Изучив код и журнал вывода и немного погуглив, я понял, что в потоке пользовательского интерфейса слишком много данных. Подводя итог, это прекрасно работает:
public List<T> GetList(Expression<Func<T, bool>> expression)
{
return Connection.Table<T>().Where(expression).ToList();
}
Однако приложение зависает при попытке вызвать асинхронную версию метода:
public async Task<List<T>> GetList(Expression<Func<T, bool>> expression)
{
return await AsyncConnection.Table<T>().Where(expression).ToListAsync();
}
Я тоже пытался быть модным, но результат был тот же:
public async Task<List<T>> GetList(Expression<Func<T, bool>> expression)
{
return await Task.Factory.StartNew(() =>
{ return Connection.Table<T>().Where(expression).ToList(); });
}
Используется так:
var lst = GetList(x => x.EntityName.Equals(entityMobile.EntityName)).Result