【发布时间】:2016-01-02 19:37:02
【问题描述】:
我有一个网站,许多注册用户同时连接,他们可以互相发送消息。每个用户在服务器上都有自己的 Session 对象,在这个 Session 对象中我存储“消息”列表 - 这是用户的消息。
Session["Messages"] = new List<UserMesages>();
//.... more code here
Session["Messages"] = BL.GetMyMessages(); //get a list of messages
//.... more code here
BL.MessageReceived += RefreshUserMessages();
public static void RefreshUserMessages(){
//this code doesn't execute for all the sessions, but only for my current user.
}
我需要一种方法来了解用户何时收到新消息 - 我不希望每个请求都询问我的数据库。
我尝试通过 BL 类使用事件(当消息存储在数据库中时,会引发事件),但事件不会从一个 Session 传递到另一个 Session。
在我的 BL 课上,我有:
public delegate void MessageReceivedEventHandler(object sender, MessageEventArgs e);
public static event MessageReceivedEventHandler MessageReceived;
public static int SaveMessageForUser(Message msg) {
//... save the message
if(MessageReceived != null) {
MessageReceived (userid, msg) // <-- correct parameters go here
}
}
有什么想法吗?如何实现,在ASP.Net中这样的
【问题讨论】: