我给自己写了一个多线程随机生成器
public static class MyRandGen
{
private static Random GlobalRandom = new Random();
[ThreadStatic]
private static Random ThreadRandom = new Random(SeedInitializer());
private static int SeedInitializer()
{
lock (GlobalRandom) return GlobalRandom.Next();
}
public static int Next()
{
return ThreadRandom.Next();
}
}
但是,它在触发 Next() 时会引发 NullReferenceException,我不明白。这种初始化 ThreadStatic 字段是否以某种方式被禁止?
我知道我可以每次都检查该字段是否已初始化,但这不是我正在寻找的解决方案。