我有下面的代碼,可以通過多個Web請求在同一秒調用。因此,我不希望第二個請求觸及數據庫,但是一直等到第一個請求完成。應該重構此C#代碼以使用Lazy <T>類嗎?
我應該重構這個使用Lazy<T>
關鍵字
類嗎?如果同時發生對Lazy<T>
一段代碼的10次調用,那麼這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
}
'懶惰'不是關鍵字。 –
BoltClock
那麼它叫什麼呢? –
它簡單地稱爲一種類型。更具體地說,這是一個班級。 – BoltClock