Я пытаюсь сделать мой базовый класс репозитория асинхронным, и у меня возникают проблемы. Я использую Dapper ORM в своем приложении C#.Блокировка основной темы на async/await
метод Base
protected async Task<List<T>> Read<T>(CommandDefinition cmd) {
using(SqlConnection myCon = new SqlConnection(Config.DBConnection)) {
await myCon.OpenAsync();
IEnumerable<T> results = await myCon.QueryAsync<T>(cmd);
List<T> retVal = results.ToList();
myCon.Close();
return retVal;
}
}
Вызов метода
public List<Category> GetAllActiveCategories(Guid siteGuid) {
return base.Read<Category>(SPNAME_GETALLACTIVE, siteGuid).Result;
}
Все выглядит в порядке со мной. У меня есть объявление метода, украшенное ключевым словом async. Я жду асинхронных методов.
Проблема, с которой я столкнулась, заключается в том, что нитки блокируются на await myCon.OpenAsync();
. Это моя первая попытка использовать async и ждать, поэтому я уверен, что я делаю что-то неправильно, но это не очевидно. Пожалуйста помоги!
@KirillShlenskiy Я думаю, что вы на что-то. Я буду редактировать большинство, чтобы показать один из методов, которые я использую, который блокирует его. – fizch
Теперь, когда вы отправили потребителя, я уверен. Отправляя мои комментарии в качестве ответа. –