自从我被难住以来已经有一段时间了。疯狂的是,我已经在我的代码的其他区域多次这样做了,所以它几乎是完整的复制和粘贴,但除了这段代码不能正常工作。所以我不知何故错过了一些非常明显的东西。
public class RoomCache
{
private ConcurrentDictionary<string, List<string>> _dicOnlineTraders;
ILoggingService _logService = new LoggingService();
public RoomCache()
{
_dicOnlineTraders = new ConcurrentDictionary<string, List<string>>();
}
public void UpdateTraderCurrentRoom(string sRoom, string sTrader)
{
_dicOnlineTraders.AddOrUpdate(sRoom, new List<string>() { sTrader }, (x, y) => UpdateRoomOnlineTraderList(sTrader, y));
}
private List<string> UpdateRoomOnlineTraderList(string sTrader, List<string> aryTraderList)
{
try
{
if (!aryTraderList.Contains(sTrader))
aryTraderList.Add(sTrader);
return aryTraderList;
}
catch (Exception ex)
{
_logService.LogError(ex);
return aryTraderList;
}
}
}
上面的类在 Application_Start() global.asax.cs 中实例化,如下所示:
public static RoomCache RoomCache;
RoomCache = new RoomCache();
所以现在在页面加载之间,我的字典没有保留我在调用 UpdateRoomOnlineTraderList 时添加到列表中的值。当我通过时,列表就在那里。下次我加载页面时它就消失了,我是 100% 没有其他东西从字典中删除这个值。
我的字典如何在页面加载之间不保留值?密钥仍然保留,但价值消失了。我很困惑。