0

while在 C# 中的循环遇到了一些问题。假设每周发生一次。我正在循环通过 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);
}
4

1 回答 1

2

您的数据库性能可能会有所不同,从而导致您的问题。为您的SqlDataReader数据库提供一个流,并且不在内存中缓冲。您对“在循环之前执行查询”的假设是不正确的。流保持打开状态,您正在使用此循环通过游标从数据源一次读取一条记录。因此,随着您的数据库性能波动,您的循环性能也会波动。它不会在循环之前将所有记录加载和缓冲到内存中 - 如果您愿意,您可以这样做,但我不建议在内存使用方面这样做。

于 2013-06-07T15:50:01.017 回答