2012-09-12 55 views
2

我有一个缓存数据管理器从数据库中提取数据并将其返回到网格。每次数据管理员必须获取一些数据时,都有一种方法来清除包含其他一些方法的数据集,但也使用_dataset.rejectChanges()方法。dataSet.RejectChanges()抛出异常

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

+0

绝对检查这个链接,你可能会得到你的答案: http://stackoverflow.com/questions/9768066/datatable-throwing-exception-on-rejectchanges – Xavier

回答

0

A cached data manager是ASP.NET应用程序中的红旗。

DataSet实例方法不是线程安全的,所以如果多个线程正在更新缓存的数据集,所有投注都关闭,您可以期待随机的“heisenbugs”。

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