2
我想使用异步模式来执行SQL命令并返回一个DataTable。 有人可以请教如何解决这个问题?使用ExecuteReaderAsync时出现死锁
这是我的代码:
private static async Task<DataTable> ExecuteAsync(Connections connection, SqlBuilder sql)
{
using (SqlConnection conn = new SqlConnection(GetConnectstring(connection)))
{
await conn.OpenAsync();
using (SqlCommand cmd = new SqlCommand(sql.Query, conn))
{
foreach (var parameter in sql.ColumnValues.Where(d => !d.Name.StartsWith("#")))
{
cmd.Parameters.AddWithValue(parameter.Name, parameter.Value);
}
//Why am I getting a deadlock when executing the next line?
using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
{
DataTable dt = new DataTable();
dt.Load(reader);
return dt;
}
}
}
}
最好的问候, 托马斯
你确定这是一个死锁,不只是在服务器连接上超时? – bradgonesurfing
你怎么知道你有一个僵局?您可能连接到错误的服务器,连接速度较慢或返回的数据太多。如果您使用同步方法,该方法是否工作? –
你需要描述“死锁”。这也是SQL Server可以生成的一个例外。我怀疑是真正的问题。 –