Вы можете заключить словарь в однозадачный класс, ориентированный на многопотоковое исполнение. Это должно обеспечить всю функциональность ConcurrentDictionary to Dictionary. Ссылка на словарь требует только одного дополнительного уровня косвенности.
Справка:
Singleton.Instance.myDictionary.Add(1, "Hello World");
Декларация:
public sealed class Singleton
{
private static volatile Singleton instance;
private static object syncRoot = new Object();
public Dictionary<int, string> myDictionary = new Dictionary<int, string>();
private Singleton() {}
public static Singleton Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}
Смотрите здесь для получения дополнительной информации о шаблоне Singleton в C #. Обратите внимание, что существует только одно различие между шаблоном по этой ссылке и моим примером кода.