私は同じ秒で複数のWebリクエストを介して呼び出すことができる次のコードを持っています。したがって、私は2番目の+要求がデータベースに当たるのを望んでいませんが、最初の要求が行われるまで待っています。この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
}
'Lazy'はキーワードではありません。 –
BoltClock
それでは、それは何と呼ばれていますか? –
これは単純にタイプと呼ばれています。具体的には、クラスです。 – BoltClock