我是 C# 中多线程的新手。但是通过阅读 C# 书籍和教程中的各个章节。我知道开发用于多线程应用程序的类的最佳方法是创建不可变类。
但我不太确定如何处理暴露读/写属性的类。在我读过的一些文章中,作者在读/写属性周围放置了锁,例如
public class Test
{
private string property1;
public string ClassProperty
{
get
{
lock
{
return Property1;
}
}
set
{
lock
{
Property1 = value;
}
}
}
}
我知道,在一个类中声明和使用的任何共享变量都需要在多线程应用程序中锁定。但是我读过的一些文章表明,如果暴露的属性是引用类型,则上述代码将不起作用。其他人建议您不能使具有公开属性的类成为线程安全的?有人对这个话题有明确的答案吗?
谢谢