我有一个缓存数据管理器,它从数据库中获取数据并将其返回到网格。每次数据管理器必须获取某些数据时,都有一种清除数据集的方法,该数据集由一些其他方法组成,但也使用_dataset.rejectChanges()
方法。
问题: _dataSet.rejectChanges()方法抛出“ RowNotInTableException:此行已从表中删除且没有任何数据.BeginEdit()将允许创建这一行中的新数据。“ 此外,每次都不会抛出此异常,而是随机。 (我怀疑其他用户与我的缓存数据管理器进行交互,这会导致一些奇怪的问题) 是否有可能其他用户可能会导致此问题(如何?)。任何修复?
答案 0 :(得分:0)
cached data manager
是ASP.NET应用程序中的红色标记。
DataSet
实例方法不是线程安全的,所以如果多个线程正在更新缓存的DataSet,那么所有的赌注都会关闭,你可以期待随机的“heisenbugs”。
使用锁定,甚至更好地重新考虑缓存可更新数据集的设计。