Him*_*ack 6 c# asp.net singleton
我有从DB获取的单例,因此它是昂贵的负载.它是懒惰的.
我想创建一个方法来刷新该单例并在需要时填充它.
数据是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;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
这有点不正确,你的
if (m_Instance == null)
确实应该在锁的内部。
抱歉,没发现这一点。
如果您已经在刷新,则内置的任何内容都不会导致其他客户端默默地放弃呼叫。我认为超时会产生异常。也许维护一个陈旧的日期时间,您可以检查它以避免对排队的调用者进行刷新。
| 归档时间: |
|
| 查看次数: |
2922 次 |
| 最近记录: |