我有一个案例,在一个非常规则的选择调用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();
为什么需要这么长时间?更重要的是,我能做些什么来加快速度?
答案 0 :(得分:0)
我无法找出这是什么/为什么会发生这种情况。因此,在关闭我的对象的调用,我创建一个工作线程,并关闭数据读取器和连接。然后我立即返回,以便用户看到没有延迟。工作正常。
更新:根据SqlDataReader.Close(),可以通过在调用Close方法之前调用关联的SqlCommand对象的Cancel方法来减少它。 h / t Lingaraj Mishra