マルチスレッドの乱数発生器を自分で作成しました
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 フィールドの初期化はどういうわけか禁止されていますか?
フィールドが毎回初期化されているかどうかを確認できることはわかっていますが、それは私が探している解決策ではありません。