做聊天室时,用一个类来缓存最新一的条消息
public class chatMessage
{
public chatMessage()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static int xid;//id
public static string usip;//发消息者IP
public static string tfrom;//发消息者
public static string tto;//收消息者
public static string content;//消息内容
public static string indate;//发消息时间
}
当最新一条消息发布时,就更新此类的所有静态属性[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string settalk(string content)
{
chatMessage.xid = chatMessage.xid + 1;
chatMessage.tfrom = Convert.ToString(Session["usid"]);
chatMessage.tto = Convert.ToString(System.Web.HttpContext.Current.Request.QueryString["tkto"]);
chatMessage.content = content;
chatMessage.indate = DateTime.Now.ToString();
chatMessage.usip = System.Web.HttpContext.Current.Request.UserHostAddress;
return "ok";
}可是当两个用户同时点击发布消息的按钮时,会有一条消息被刷掉.请问大家该怎么办?
读消息代码如下:[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string getCon()
{
if (chatMessage.xid > Convert.ToInt32(Session["oldid"]) && chatMessage.tto == Convert.ToString(Session["usid"]))
{
Session["oldid"] = chatMessage.xid;
return chatMessage.tfrom + "在" + chatMessage.indate + "时,对您说:<br/>" + chatMessage.content+"<br/>";
}
else
{
return "no";
}
}
public class chatMessage
{
public chatMessage()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static int xid;//id
public static string usip;//发消息者IP
public static string tfrom;//发消息者
public static string tto;//收消息者
public static string content;//消息内容
public static string indate;//发消息时间
}
当最新一条消息发布时,就更新此类的所有静态属性[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string settalk(string content)
{
chatMessage.xid = chatMessage.xid + 1;
chatMessage.tfrom = Convert.ToString(Session["usid"]);
chatMessage.tto = Convert.ToString(System.Web.HttpContext.Current.Request.QueryString["tkto"]);
chatMessage.content = content;
chatMessage.indate = DateTime.Now.ToString();
chatMessage.usip = System.Web.HttpContext.Current.Request.UserHostAddress;
return "ok";
}可是当两个用户同时点击发布消息的按钮时,会有一条消息被刷掉.请问大家该怎么办?
读消息代码如下:[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string getCon()
{
if (chatMessage.xid > Convert.ToInt32(Session["oldid"]) && chatMessage.tto == Convert.ToString(Session["usid"]))
{
Session["oldid"] = chatMessage.xid;
return chatMessage.tfrom + "在" + chatMessage.indate + "时,对您说:<br/>" + chatMessage.content+"<br/>";
}
else
{
return "no";
}
}
//某个函数
lock(asyncLock)
{
//中间的代码同一时间只能被一个人执行}
//某个函数
lock(asyncLock)
{
//中间的代码同一时间只能被一个人执行 }
-----------------
可否讲明白一点??