C# 共享集合的线程安全性

C# 共享集合的线程安全性,c#,multithreading,C#,Multithreading,我读过很多关于用C同步线程、锁语句和竞争条件的文章。不幸的是,其中一些内容并没有被我的大脑完全理解 在这种情况下,我有一个共享对象,其中包含用于读取、写入、创建和删除数据库记录的不同类的列表。在应用程序的生命周期内,此对象在不同线程之间共享-我的问题是我无法确定如何保护/锁定此对象,以便在不损坏数据的情况下始终安全地对其进行操作 我已经看到一个问题很少发生-有时会保存空白数据库行-我假设这与另一个线程在classes Save方法中的“INSERT”和“UPDATE”数据库查询之间更改对象有关

我读过很多关于用C同步线程、锁语句和竞争条件的文章。不幸的是,其中一些内容并没有被我的大脑完全理解

在这种情况下,我有一个共享对象,其中包含用于读取、写入、创建和删除数据库记录的不同类的列表。在应用程序的生命周期内,此对象在不同线程之间共享-我的问题是我无法确定如何保护/锁定此对象,以便在不损坏数据的情况下始终安全地对其进行操作

我已经看到一个问题很少发生-有时会保存空白数据库行-我假设这与另一个线程在classes Save方法中的“INSERT”和“UPDATE”数据库查询之间更改对象有关

我的感觉是,一个合适的锁是解决方案,但我不知道应该在哪里


非常感谢您对我所犯错误的任何帮助或见解

您是否阅读过.net 4.0 framework中提供的新System.Collections.Concurrent命名空间。此命名空间提供了几个安全的集合类


这是指向页面的链接

您是否忘记包含代码?没有它,我们无法找出问题所在。