gpt4 book ai didi

c# - 如何在C#中刷新单例

转载 作者:太空狗 更新时间:2023-10-29 23:26:27 26 4
gpt4 key购买 nike

我有从数据库中获取的单例,因此它是昂贵的负载。它是延迟加载的。

我想创建一个方法来刷新该单例并在需要时填充它。

数据是 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;
}
}

谢谢

最佳答案

这有点不对,你的

if (m_Instance == null)

真的应该在锁的内侧

抱歉,没发现。

如果您已经刷新,没有内置任何东西可以让其他客户端默默地放弃调用。我认为超时会产生异常。也许维护一个陈旧的 DateTime,您可以检查它以避免对排队的调用者进行刷新。

关于c# - 如何在C#中刷新单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5326111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com