Следует ли отредактировать этот код C # для использования вместо этого класса Lazy ?

У меня есть следующий код, который может быть вызван несколькими веб-запросами за одну секунду. Таким образом, я не хочу, чтобы второй + запрос попал в базу данных, а ждал, пока первый + не попадет в базу данных.

Должен ли я реорганизовать его, чтобы вместо этого использовать класс Lazy keyword ? Если 10 вызовов Lazy происходят одновременно, 9 из этих вызовов ждут завершения первого?

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
}
8
задан Pure.Krome 31 October 2013 в 00:13
поделиться