0

whileC# のループに問題があります。これは、1 週間に 1 回発生します。私は SQL Server データ リーダーをループしており、単純な文字列や double などを読み込んでいます...なぜこれがたまに起こるのかわかりません。コードに問題があった場合、そのパフォーマンスは常に低下するはずです。

より具体的には、これが発生した場合、ブレークポイントを設定すると、スレッドは 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データベースにストリームを提供し、メモリにバッファリングしません。「ループする前にクエリが実行される」というあなたの仮定は正しくありません。ストリームは開いたままになり、このループでカーソルを介してデータ ソースから一度に 1 つのレコードを読み取ります。したがって、DB のパフォーマンスが変動すると、ループのパフォーマンスも変動します。ループの前にすべてのレコードをメモリにロードしてバッファリングするわけではありません。必要に応じて実行できますが、メモリ使用量の観点からはお勧めしません。

于 2013-06-07T15:50:01.017 に答える