asp.net2.0内置Application对象的应用
Application对象的应用
本节通过一个简单的实例来介绍如何使用Application对象制作一个简单的聊天室。聊天室主页运行结果如图1所示。

图1 聊天室主页面
程序开发步骤如下。
(1)新建一个网站,命名为15_03,其主页默认为Default.aspx。
(2)在该网站中添加3个Web页面:Default2.aspx、Default3.aspx和Default4.aspx,其中Default2.aspx页面为聊天室的主页面,Default3.aspx页面用来显示聊天信息,Default4.aspx页面用来显示用户列表。
(3)在该网站中添加一个Global.asax全局程序集文件,用来初始化Application对象值。
(4)程序主要代码如下。
由于该聊天室是使用Application对象实现的,因此在应用程序启动时,应该将所有Application对象中的值设置为0,其实现代码如下:
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,如果大于,则将所有记录清空,同时重新记录用户发送的信息;否则,在原有记录的基础上,增加一条新信息。【发送】按钮的Click事件代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
int P_int_current = int.Parse(Application["current"].ToString());
Application.Lock();
if (P_int_current == 0 || P_int_current > 20)
{
P_int_current = 0;
Application["chats"] = Session["userName"].ToString() + "说:" + TextBox1.Text.Trim() + "(" + DateTime.Now. ToString() + ")";
}
else
{
Application["chats"] = Application["chats"].ToString() + "," + Session["userName"].ToString() + "说:" + TextBox1. Text.Trim() + "(" + DateTime.Now.ToString() + ")";
}
P_int_current += 1;
Application["current"] = P_int_current;
Application.UnLock();
}
显示聊天信息页面Default3.aspx加载时,从Application对象中读取保存的聊天信息,并将其显示在TextBox文本框中。Default3.aspx页面的Page_Load事件代码如下:
protected void Page_Load(object sender, EventArgs e)
{
int P_int_current = int.Parse(Application["current"].ToString());
Application.Lock();
P_int_current = int.Parse(Application["current"].ToString());
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)
{
TextBox2.Text = P_str_chat[i].ToString();
}
else
{
TextBox2.Text = TextBox2.Text + "n" + P_str_chat[i].ToString();
}
}
Application.UnLock();
}
完整程序代码如下:
★ ★★★★Default2.aspx页面设计文件完整程序代码★★★★★
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
无标题页