我在C#中遇到while
循环时出现问题。发生这种情况,让我们每周说一次。
我正在循环一个SQL Server数据阅读器,我阅读简单的字符串,双打等...我不明白为什么这种情况偶尔会发生。如果我的代码出现问题,那么它的性能应该总是很差。
更具体地说,当发生这种情况时,当我设置断点时,线程会在3或4秒后中断。而最奇怪的是,如果我按F5或者我按照步骤"循环,花费的时间更少!
这真的很奇怪,这让我很疯狂。
我想知道是否有人遇到过这种奇怪的交易。
提前感谢您的回复!
PS:while
循环由特定线程(不是主线程)执行。
PS 2:这是我的代码
reader = DBConnect.GetInstance.ExecuteReader(request.ToString(), out connection, timeOut);
while (reader.Read())
{
SourceInst sourceInst = new SourceInst();
sourceInst.Load(reader);
sourceInstList.Add(sourceInst);
}
答案 0 :(得分:2)
您的数据库性能可能会有所不同,从而导致您的问题。 SqlDataReader
为数据库提供流,不在内存中缓冲。您在“循环之前执行查询”的假设是不正确的。流保持打开状态,您通过此循环从数据源通过光标一次读取一条记录。因此,当您的数据库性能波动时,您的循环性能也会发生波动。它不会在循环之前将所有记录加载并缓冲到内存中 - 如果您愿意,可以这样做,但我不建议在内存使用方面。