Я написал себе многопоточный генератор случайногоInitializing 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?
Я знаю, что могу просто проверить, было ли поле инициализировано каждый раз, но это не то решение, которое я ищу.
Почему бы не использовать [ '' Lazy имеет Потокобезопасная опции] (http://msdn.microsoft.com/en-us/library/ee808725.aspx) –
Mgetz
Ваш код работает без исключения для меня. VS2010 \ 4.0 –
Почему бы не использовать 'Rngcryptoserviceprovider', который является ThreadSafe –