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 を調査するようになりました。使用する必要があるかどうか、また使用する場合はどのようにすればよいか教えてください。
ありがとう