所以這裏就是我想要做的事:如何使這個C#類單身,線程安全
public static class MyClass
{
private Dictionary<string,IDisposable> dict = null;
static MyClass()
{
dict = new Dictionary<string,IDisposable>();
// i fill up the dictionary in a loop here
//
}
public static UseDictionary(string name)
{
var obj = dict[name]
obj.DoSomeAction();
}
}
static void Main(string[] args)
{
Parallel.For(0, 1000, x =>
{
// assuming 'name' does exist in the dictionary
MyClass.UseDictionary("name"); // randomly throws null reference errors
});
}
我基本上希望有這個類的一個實例,這將初始化字典只有一次( IDisposable項目是一個昂貴的遠程連接我打開,我想打開它只有一次)
此類將用於不同的asp.net頁面。所以我希望它是線程安全和單身。我想在靜態構造函數中初始化字典將使它只能被調用一次,並且線程安全,不知道爲什麼我不斷收到錯誤。有任何想法嗎?
也許分享錯誤消息的確切文本可能對嘗試幫助您的人有益。 – 2012-03-30 02:14:35
從示例中,唯一可能導致的問題是由多個線程同時調用的DoSomething方法存在一些問題。 – 2012-03-30 02:21:44
可能的重複[這是一個有效的,懶惰的,線程安全的Singleton實現C#?](http://stackoverflow.com/questions/2615527/is-this-a-valid-lazy-thread-safe-singleton- c) – Joe 2012-03-30 02:26:43