我被要求在類的線程內安全地使字典安全。以同樣的方法寫入兩個.net字典時的線程安全性
我的第一個建議是實現一個線程安全的字典中,.NET開發者社區已經工作之上,但遭到拒絕。
的代碼是這樣的:
class Example()
{
Dictionary<string, string> dic1;
Dictionary<string, string> dic2;
public void Example()
{
dic1 = new Dictionary<string,string>(10);
dic2 = new Dictionary<string,string>(10);
}
public string Method1(string param1)
{
if(dic1.ContainsKey(param1))
{
return dic1[param1];
}
if(IsValidParam(param1))
{
dic1.Add(param1, param1);
return param1;
}
try
{
var params = GetValidParams(param1);
if(params.Count > 0)
{
foreach(var param in params)
{
if(!isValirParam(param)
continue;
dic1.Add(param1, param);
if(!dic2.ContainsKey(param1))
{
dic2.Add(param, param1);
}
return param;
}
}
else
{
dic2.Add(param1, param1);
return param1;
}
}
catch(Exception ex)
{
.....
}
return param1;
}
}
這僅僅是那些讀寫同樣的方法內同時訪問該字典的多種方法之一。
我想對重構並在每個添加和返回使用「ReaderWriterLockSlim」,但我不知道這是怎麼回事,使這個線程安全的。
你有什麼想法如何解決這個問題?我打開的建議...提前
感謝您的時間
查看[ConcurrentDictionary](http://msdn.microsoft.com/zh-cn/library/dd287191.aspx)。也許它會覆蓋你的需求。 – Pashec
由於針對一個字典的操作取決於另一個字典中的值的測試,因此ConcurrentDictionary有所幫助,但本身似乎不足。 – hatchet
現在我堅持使用框架3.5,直到明年我們纔會移動到4.0。\抱歉不要提及 – hyeomans