2

データベースからデータを取得してグリッドに返すキャッシュ データ マネージャーがあります。データ マネージャーがデータを取得する必要があるたびに、データセットをクリアする方法があります。この方法は、他の方法で構成されていますが、メソッドも使用しています_dataset.rejectChanges()

問題: _dataSet.rejectChanges() メソッドが「RowNotInTableException:この行はテーブルから削除されており、データがありません。BeginEdit() により、この行に新しいデータを作成できます。 」がスローされます。また、この例外は毎回スローされるのではなく、randomです。(他のユーザーがキャッシュされたデータ マネージャーと対話し、これが奇妙な問題を引き起こしていると思われます)
他のユーザーがこの問題を引き起こす可能性はありますか (どのように?)。修正はありますか?

4

1 に答える 1

0

Acached data managerは、ASP.NET アプリケーションの危険信号です。

DataSetインスタンス メソッドはスレッド セーフではないため、複数のスレッドがキャッシュされた DataSet を更新している場合、すべての賭けがオフになり、ランダムな "heisenbugs" が発生する可能性があります。

ロックを使用するか、更新可能な DataSet をキャッシュする設計を再検討してください。

于 2012-09-12T07:57:58.700 に答える