我需要在ASP.Net MVC应用程序中实现一个多线程全局变量。
ConcurrentDictionary<T>
是理想的,但如何让我的应用程序中的每个用户会话都可以访问它?
这样的事情能做到吗?
public static class GlobalStore
{
public static ConcurrentDictionary<string, DateTime> GlobalVar { get; set; }
}
我需要多个用户才能读取和写入此对象。
答案 0 :(得分:4)
您可以使用HttpContext.current.Application,如下所示
创建对象
HttpContext.Current.Application["GlobalVar"] = new ConcurrentDictionary<string, DateTime>();
获取或使用对象
ConcurrentDictionary<string, DateTime> GlobalVar = HttpContext.Current.Application["GlobalVar"] as ConcurrentDictionary<string, DateTime>;
修改强>
使用静态变量编辑静态类,而不是像
那样属性public static class GlobalStore
{
public static ConcurrentDictionary<string, DateTime> GlobalVar;
}
现在在global.aspx Application_Start事件中使用新对象设置该变量,如下所示
GlobalStore.GlobalVar = new ConcurrentDictionary<string, DateTime>();
然后您可以通过
在您的应用程序中使用它 GlobalStore.GlobalVar["KeyWord"] = new DateTime();
DateTime obj = GlobalStore.GlobalVar["KeyWord"] as DateTime;
是的ConcurrentDictionary以及静态变量在.net应用程序中是线程安全的