我已经写了自己是一个多线程随机生成初始化ThreadStatic现场还是引起的NullReferenceException
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();
}
}
但是,我抛出一个NullReferenceException上发射的next(),我不明白。那种初始化ThreadStatic字段是不是被禁止了?
我知道我可以检查每次是否初始化字段,但这不是我正在寻找的解决方案。
为什么不使用['懒惰'它有线程安全的选项(http://msdn.microsoft.com/en-us/library/ee808725.aspx) –
Mgetz
您的代码工作对我来说没有例外。 VS2010 \ 4.0 –
为什么不使用'Rngcryptoserviceprovider'这是ThreadSafe –