Похоже что получаю Deadlock при использовании ExecuteReaderAsync(). Не могу понять что не так
Task task = ExecReader(tempList, query);
task.Wait();
async Task ExecReader(List<string> tempList, string query)
{
using (SqlConnection sqlConn = new SqlConnection(connStr))
{
try
{
sqlConn.Open();
SqlCommand sqlCmd = new SqlCommand(query, sqlConn);
SqlDataReader reader = await sqlCmd.ExecuteReaderAsync();
while(reader.Read())
{
tempList.Add(reader.GetString(0));
}
catch(Exception e)
{ }
}
}
}
Доходит до ExecuteReaderAsync() и все, виснит наглухо.
Пробовал через GetAwaiter(), но в таком случае главный поток не дожидается выполнения задачи, и берет управление сразу после ExecuteReaderAsync(). А если через GetAwaiter().GetResult(), то снова висит.
Wait, он же блокирует ваш поток. Делайтеawait. – VladD May 30 '17 at 13:44