【发布时间】:2009-11-12 06:17:48
【问题描述】:
我正在使用提供对数据库的访问的第 3 方库。在数据库连接对象中,有一个名为Updated 的事件,只要数据库被修改就会触发。
当我的代表想要从数据库中读取数据时,我遇到了障碍。看起来连接有一个ReaderWriterLock 保护数据库。在ExecuteNonQuery 调用期间,写入器锁定被占用,但在事件触发之前未释放。所以,如果我想阅读,我的委托就陷入僵局了。
我开始编写一个单独的线程,该线程将从数据库连接中获取事件并将其传递给已注册的委托,但这感觉像是一个草率的解决方案。我是否缺少处理此问题的简单方法?
真正困扰我的是我并不总是遇到死锁情况。但是,当我点击它并查看调用堆栈时,它会一直回到我发布更新的位置。
顺便说一下,我使用的库是System.Data.SQLite。
【问题讨论】:
标签: c# multithreading events