我一直在构建 ASP.NET MVC 应用程序,当我启动它时我担心潜在的多线程问题。一个特别关注的是以下代码:
private static IDictionary<string, ISettings> _settingsDictionary = new Dictionary<string, ISettings>();
public T Settings<T>() where T : ISettings, new() {
var key = typeof(T).FullName;
if (!_settingsDictionary.ContainsKey(key))
_settingsDictionary[key] = _settingsService.GetSettings<T>();
return (T)_settingsDictionary[key];
}
注意字典被定义为静态的。这允许我缓存字典,以便它为应用程序长度的每个请求返回相同的实例。
这在本地测试时效果很好,但我担心数百名用户使用它时可能会受到影响。这导致我调查 ConcurrencyDictionary。请您告诉我是否需要使用它以及如果是这种情况我将如何使用它。
谢谢