【发布时间】:2011-03-16 13:37:05
【问题描述】:
我有从 DB 获取的单例,因此负载很昂贵。 它是延迟加载的。
我想创建一个方法来刷新该单例并在需要时填充它。
数据是数据库并且非常昂贵,所以我只想刷新一次,以防我有并发调用。 (也就是说,如果我收到 500 次刷新调用,我只想重新开始刷新一次)
public static PageData Instance
{
get
{
if (m_Instance == null)
{
lock (instanceLock)
{
if (m_Instance == null)
{
m_Instance = new PageData();
}
}
}
return m_Instance;
}
}
public void ReSync()
{
lock (instanceLock)
{
/* Setting to null to force the Instance to re-build */
m_Instance = null;
PageData pData = Instance;
}
}
谢谢
【问题讨论】:
-
系统应该如何决定何时需要刷新?是否有一个时间跨度,在此期间所有呼叫都应视为同一个呼叫?