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可以生成的一個例外。我懷疑是真正的問題。 –