SqlDataReader关闭需要10秒以上 - 为什么?

时间:2012-11-14 19:21:44

标签: ado.net sqldatareader

我有一个案例,在一个非常规则的选择调用SqlDataReader.Close()需要10秒以上才能返回。唯一不寻常的是select返回20行,但在这种情况下,没有行被读取。

DbDataReader reader = (DbDataReader) cmd.ExecuteReader(CommandBehavior.Default);
reader.MoveNext();
var row = de.Current;

// lots of other code that does not touch this.
reader.Close();

为什么需要这么长时间?更重要的是,我能做些什么来加快速度?

1 个答案:

答案 0 :(得分:0)

我无法找出这是什么/为什么会发生这种情况。因此,在关闭我的对象的调用,我创建一个工作线程,并关闭数据读取器和连接。然后我立即返回,以便用户看到没有延迟。工作正常。

更新:根据SqlDataReader.Close(),可以通过在调用Close方法之前调用关联的SqlCommand对象的Cancel方法来减少它。 h / t Lingaraj Mishra