Tengo el siguiente código que podría llamarse a través de múltiples solicitudes web en el mismo segundo. Como tal, no quiero que la segunda solicitud + llegue a la base de datos, sino que espere hasta que la primera lo haga.¿Debería refactorizarse este código C# para usar la clase Lazy <T>?
¿Debo refactorizar esto para usar la clase de palabra clave Lazy<T>
en su lugar? Si se producen 10 llamadas a un código Lazy<T>
al mismo tiempo, ¿esperan 9 de esas llamadas a que se complete la primera?
public class ThemeService : IThemeService
{
private static readonly object SyncLock = new object();
private static IList<Theme> _themes;
private readonly IRepository<Theme> _themeRepository;
<snip snip snip>
#region Implementation of IThemeService
public IList<Theme> Find()
{
if (_themes == null)
{
lock (SyncLock)
{
if (_themes == null)
{
// Load all the themes from the Db.
_themes = _themeRepository.Find().ToList();
}
}
}
return _themes;
}
<sip snip snip>
#endregion
}
'Lazy' no es una palabra clave. –
BoltClock
Entonces, ¿cómo se llama, entonces? –
Simplemente se llama un tipo. Más específicamente, es una clase. – BoltClock