-1
我正在研究一個包含靜態字典的ASP.NET MVC應用程序。這是有問題的,因爲Dictionary類不是線程安全的,當它被併發的Web請求訪問時可能會造成麻煩。我正在考慮如此包裝字典:在ASP中創建線程安全的靜態字典MVC
public class DataDictionary
{
private object Lock = new object();
private int NextId = 0;
private Dictionary<int, Data> DataLog = new Dictionary<int, Data> {};
public int Add(Data data)
{
lock (Lock)
{
var id = NextId++;
DataLog.Add(id, data);
return id;
}
}
public Data GetData (int id)
{
lock (Lock)
{
return DataLog[id];
}
}
public void Remove(int id)
{
lock (Lock)
{
DataLog.Remove(id);
}
}
}
這將允許安全訪問字典併發Web請求?如果不是,我能做些什麼來安全地促進類似行爲?
什麼時候你的AppPool回收?或者當您需要擴展? '靜態'總是一個蹩腳的陰謀。 –
ConcurrentDictionary怎麼樣?有關於它的文檔[這裏](https://msdn.microsoft.com/en-us/library/dd287191(v = vs.110).aspx)。第一行文檔讀取'表示可以同時由多個線程訪問的鍵/值對的線程安全集合。' –
@HenkHolterman不需要關心可伸縮性 - 應用程序僅在內部使用,並且由< 10個人。如果這種變化,我可以保證這個應用程序將很長時間死了。 – Conduit