我将应用程序级变量存储在global.asax文件的缓存中:
void Application_Start(object sender, EventArgs e)
{
Application.Lock();
List<MyClassName> myobjects = new List<MyClassName>();
HttpContext.Current.Cache["List"] = myobjects;
Application.UnLock();
}
我访问它并在页面中更改它:
protected void Page_Load(object sender, EventArgs e)
{
List<MyClassName> myobjects = (List<MyClassname>)HttpContext.Current.Cache["List"];
//change myobjects...
HttpContext.Current.Cache["List"] = myobjects;
}
问题是: *假设我们有两个用户(浏览器)同时运行这个站点(例如他们正在聊天)。当一个用户更改myobjects变量时如何通知另一个用户?*
我们可以使用计时器定期检查 myobjects 并将其与旧对象进行比较。但这不是最好的方法。
那么有没有更好的方法在全局变量更改时通知另一个用户?