Application对象一个典型的应用就是聊天室的制作。下面就通过一个示例介绍一下。
下面示例主要利用Application对象实现聊天室功能。执行程序,首先应该登录聊天室,在“用户名”文本框中输入登录用户的名称,再单击【登录】按钮进入聊天室。示例运行结果如图1所示。

图1 聊天室
程序实现的主要步骤:
(1)新建一个网站,添加一个全局应用程序类(即Global.asax文件)。在该文件的Application_Start事件中将在访问数初始化为0,代码如下:
(2)新建一个网站,其主页默认为Default.aspx,将其重命名为Login.aspx。
(3)在该网站中添加3个Web页面:Default.aspx、Content.aspx和List.aspx,其中Default.aspx页面为聊天室的主页面,Content.aspx页面用来显示用户的聊天信息,List.aspx页面用来显示在线用户的列表。
(4)在该网站中添加一个Global.asax全局程序集文件,用来初始化Application对象值。
(5)程序主要代码如下。
该聊天室是使用Application对象实现的,在应用程序启动时,应在Application对象的Application_Start事件中将所有数据初始化。代码如下:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//建立用户列表
string user = "";//用户列表
Application["user"] = user;
Application["userNum"] = 0;
string chats = "";//聊天记录
Application["chats"] = chats;
//当前的聊天记录数
Application["current"] = 0;
}
聊天室主页面中,单击【发送】按钮时,首先调用Application对象的Lock方法对所有Application 对象进行锁定,然后判断当前聊天信息的记录数是否大于20,如果大于,则清空聊天记录,并重新加载用户的聊天记录;否则,将要聊天内容、用户名、发信息时间保存在Application对象中。代码如下:
protected void
btnSend_Click(object sender, EventArgs e)
{
int P_int_current =
Convert.ToInt32(Application["current"]);
Application.Lock();
if (P_int_current == 0 ||
P_int_current > 20)
{
P_int_current
= 0;
Application["chats"]
= Session["userName"].ToString() + "说:" + txtMessage.Text.Trim() + "(" + DateTime.Now.ToString()
+ ")";
}
else
{
Application["chats"]
= Application["chats"].ToString() + "," +
Session["userName"].ToString() + "说:" +
txtMessage.Text.Trim() + "(" + DateTime.Now.ToString() +
")";
}
P_int_current += 1;
Application["current"] =
P_int_current;
Application.UnLock();
}
显示聊天信息页面Content.aspx加载时,从Application对象中读取保存的聊天信息,并将其显示在TextBox文本框中。Content.aspx页面的Page_Load事件代码如下:
protected void Page_Load(object sender, EventArgs e)
{
int P_int_current =
Convert.ToInt32(Application["current"]);
Application.Lock();
string P_str_chats =
Application["chats"].ToString();
string[] P_str_chat =
P_str_chats.Split(',');
for (int i =
P_str_chat.Length - 1; i >= 0; i--)
{
if
(P_int_current == 0)
{
txtContent.Text = P_str_chat[i].ToString();
}
else
{
txtContent.Text = txtContent.Text + "\n" + P_str_chat[i].ToString();
}
}
Application.UnLock();
}