我读过许多关于同步线程,锁定语句和竞争条件的文章(使用C#)。不幸的是,其中一些是拒绝被我的大脑完全理解。
我遇到的情况是,我有一个包含Lists<>
个不同类的共享对象,用于读取,写入,创建和删除数据库记录。这个对象在它的生命周期(应用程序的生命周期)中在不同的线程之间共享 - 我的问题是我无法弄清楚我应该如何保护/锁定这个对象,以便始终可以安全地操作它而不会破坏数据。
我已经发现很少发生问题 - 有时空白的数据库行会被保存 - 我认为这与另一个线程改变&#39; INSERT
&#39;之间的对象有关。和&#39; UPDATE
&#39;类Save()方法中的数据库查询。
我的感觉是适当的lock
是解决方案,但我无法解决这个问题。
对于我出错的地方的任何帮助或见解都受到了极大的赞赏!
答案 0 :(得分:2)
您是否了解了.net 4.0框架中可用的新System.Collections.Concurrent命名空间。这个命名空间提供了几个踩踏安全的集合类......
以下是MSDN页面
的链接