我有一个示例静态类
public static class SampleClass
{
private static readonly string _personName;
private static readonly string _country;
static SampleClass()
{
_personName = "JourneyMan";
_country = "Zee";
System.Threading.Thread.Sleep(5000);
}
public static string PersonName
{
get { return _personName; }
}
public static string Country
{
get { return _country; }
}
}
我特意在静态构造函数中引入了一个 Thread.Sleep。
我编写了一个示例应用程序,其中两个线程等待 ManualResetEvent。我试图模拟一个线程尝试查询属性并正在执行静态构造函数并进入睡眠状态的场景,另一个线程可以访问第二个属性并返回空值吗?
但是根据我的观察,除非构造完成,否则第二个线程无法获取属性值。
这是为我们处理的吗?还是我做错了什么?
那么我可以假设,在上述情况下,不需要锁来确保静态类的构建完成吗?
谢谢