使用共享集合进行线程安全

时间:2014-09-27 02:22:58

标签: c# multithreading

我读过许多关于同步线程,锁定语句和竞争条件的文章(使用C#)。不幸的是,其中一些是拒绝被我的大脑完全理解。

我遇到的情况是,我有一个包含Lists<>个不同类的共享对象,用于读取,写入,创建和删除数据库记录。这个对象在它的生命周期(应用程序的生命周期)中在不同的线程之间共享 - 我的问题是我无法弄清楚我应该如何保护/锁定这个对象,以便始终可以安全地操作它而不会破坏数据。

我已经发现很少发生问题 - 有时空白的数据库行会被保存 - 我认为这与另一个线程改变&#39; INSERT&#39;之间的对象有关。和&#39; UPDATE&#39;类Save()方法中的数据库查询。

我的感觉是适当的lock是解决方案,但我无法解决这个问题。

对于我出错的地方的任何帮助或见解都受到了极大的赞赏!

1 个答案:

答案 0 :(得分:2)

您是否了解了.net 4.0框架中可用的新System.Collections.Concurrent命名空间。这个命名空间提供了几个踩踏安全的集合类......

以下是MSDN页面

的链接