Tôi đã viết bản thân mình một máy phát điện đa luồng ngẫu nhiênlĩnh vực Khởi tạo ThreadStatic vẫn gây 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();
}
}
Tuy nhiên, nó ném cho tôi một NullReferenceException trên bắn Tiếp(), mà tôi không hiểu. Đó có phải là loại khởi tạo các trường ThreadStatic bị cấm không?
Tôi biết tôi chỉ có thể kiểm tra xem trường có được khởi chạy mọi lúc không, nhưng đó không phải là giải pháp mà tôi đang tìm kiếm.
Tại sao không sử dụng ['Lazy', nó có các tùy chọn an toàn chủ đề] (http://msdn.microsoft.com/en-us/library/ee808725.aspx) –
Mgetz
Mã của bạn hoạt động không có ngoại lệ cho tôi. VS2010 \ 4.0 –
Tại sao không sử dụng 'Rngcryptoserviceprovider' là ThreadSafe –