2

我有一个缓存数据管理器,它从数据库中获取数据并将其返回到网格。每次数据管理器必须获取一些数据时,都有一种清除数据集的方法,该方法由一些其他方法组成,但也使用_dataset.rejectChanges()方法。

问题: _dataSet.rejectChanges() 方法抛出“ RowNotInTableException:该行已从表中删除并且没有任何数据。BeginEdit() 将允许在该行中创建新数据。” 而且这个异常不是每次都抛出,而是随机的。(我怀疑其他用户与我的缓存数据管理器进行交互,这会导致一些奇怪的问题)
其他用户是否有可能导致这个问题(如何?)。有什么修复吗?

4

1 回答 1

0

Acached data manager是 ASP.NET 应用程序中的危险信号。

DataSet实例方法不是线程安全的,因此如果多个线程正在更新缓存的 DataSet,那么所有的赌注都会被取消,并且您可以期待随机的“heisenbugs”。

使用锁定,甚至更好地重新考虑缓存可更新数据集的设计。

于 2012-09-12T07:57:58.700 回答