2

我有一个案例,在非常常规的选择中,对 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();

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

4

1 回答 1

1

我无法找出发生这种情况的原因/原因。因此,在关闭我的对象的调用中,我创建了一个工作线程并关闭数据读取器和连接。然后我立即返回,这样用户就不会看到任何延迟。工作正常。

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

于 2012-11-14T20:33:56.340 回答