日期:2014-05-17  浏览次数:20993 次

多线程操作ACCESS数据库后关闭时出错,求解!急急急……
一个多线程程序,每个线程都要操作数据库(打开、查询、修改、关闭等),程序运行一段时间后就会出错,在VS2008调试时弹出提示:
检测到 RaceOnRCWCleanup
Message: 试图释放正在使用的 RCW。活动线程或其他线程上正在使用该 RCW。释放正在使用的 RCW 的尝试会导致损坏或数据丢失。
如图:



我想可能的情况是这样,N个线程同时运行,分别在不同的时候操作数据库,此时程序能够正常运行,一段时间后,其中两个线程同时操作数据库了,一个线程操作完试图关闭数据库时,而另一个线程正在操作数据库,因此导致错误。

请问有没有办法能够避免这种情况发生,比如避免两个线程同时操作数据库。LOCK关键字可以锁定变量,不知道对数据库行不行?
多线程 数据库 access

------解决方案--------------------
如果你的access不大的话,不妨用dataset全部读到内存,程序结束时在保存到文件。
这样你用linq查询,很快,也不用打开关闭的麻烦