Cześć,
Czy ResourceManager jest odporny na wielowątkowe pobieranie tekstów?
Mam taką klasę:
public class ResourcesRepository
{
private static System.Resources.ResourceManager _resourceManager = null;
public static string GetResourceText(string key, CultureInfo culture)
{
if (string.IsNullOrWhiteSpace(key)) { throw new ArgumentNullException(nameof(key)); }
if (culture == null) { throw new ArgumentNullException(nameof(culture)); }
if (_resourceManager == null)
{
_resourceManager = new System.Resources.ResourceManager(typeof(ResourcesText));
}
return _resourceManager.GetString(key, culture);
}
}
Zastanawiam się teraz jak mam kilka endpointów w webapi, które działają asynchroniczne i wewnątrz wywołują inne metody asynchroniczne, a ResourceText pobieram za pomocą statycznej metody GetResourceText(key, cultureInfo), to czy nie wysypie mi się to w momencie jeśli _resourceManager.GetString(key, culture) zostanie w tym samym momencie wywołany przez kilka wątków?
Może tworzenie instancji _resourceManager i samo GetString lepiej jeszcze opakować w lock(){ } ?
Zastanawiałem się jeszcze czy nie zrobić tej klasy jako singleton, instancje _resourceManager tworzyć przy odpalaniu api i zrobić go jako readonly.
Macie może jeszcze jakieś ciekawe propozycje?