ASP.NET状态存储管理九大兵器之八(应用程序)
来源: 作者: 出处:综艺读书 2007-03-16可以使用 HttpApplicationState 类在整个应用程序中共享信息,该类通常是通过 HttpContext 对象的 Application 属性进行访问的。该类公开对象的键/值字典,您可以使用该字典来存储 .NET 框架对象和与来自多个客户端的多个 Web 请求相关的标量值。
|
|
|||
创建Application
private void Page_Load(object sender, System.EventArgs e)
{
if( !IsPostBack )
{
SortedList ApplicationValue =new SortedList();
ApplicationValue.Add("1","a");
ApplicationValue.Add("2","b");
ApplicationValue.Add("3","c");
ApplicationValue=SortedList.Synchronized(ApplicationValue);
Context.Application["app"]=ApplicationValue;
/*
设置Application的第2种方法
Add方法,将新的对象添加到 HttpApplicationState 集合中
Context.Application.Add("app",ApplicationValue);
*/
}
}
读取Application
private void Button1_Click(object sender, System.EventArgs e)
{
SortedList List=(SortedList)Context.Application["app"];
/*
取得Application的第2种方法
Get方法已重载。通过名称或索引获取 HttpApplicationState 对象
SortedList List=(SortedList)Context.Application.Get("app");
或者
SortedList List=(SortedList)Context.Application.Get(0);
*/
System.Text.StringBuilder sb=new System.Text.StringBuilder("");
if( List!=null )
{
sb.Append("app exists").Append("<br>") ;
for(int i=0;i<List.Count;i++)
{sb.Append((string)List.GetKey(i)).Append(" ");sb.Append((string)List.GetByIndex(i)).Append("<br>");
}
Response.Write(sb.ToString());
}
else
{
Response.Write("app not exists");
}
}
点击按钮后,显示
app exists
Key value
1 a
2 b
3 c
应用程序状态同步
应用程序中的多个线程可以同时访问存储在应用程序状态中的值。因此,当创建需要访问应用程序状态值的对象时,必须始终确保该应用程序状态对象是自由线程的并执行它自己的内部同步,要不就执行手动同步步骤以防止出现争用条件、死锁或访问冲突。
httpapplicationstate 类提供两种方法 Lock 和 Unlock,一次只允许一个线程访问应用程序状态变量。
对 Application 对象调用 Lock 会导致 ASP.NET 阻止运行在其他辅助线程上的代码试图访问应用程序状态中的任何对象。只有当调用 Lock 的线程对 Application 对象调用相应的 Unlock 方法时才解除对这些线程的阻塞。
application.lock();
Application["count"]=(int)Application["count"]+1;
Application.UnLock();
如果没有显式调用 Unlock,当请求完成、请求超时或请求执行过程中出现未处理的错误并导致请求失败时,.NET 框架将自动移除锁。这种自动取消锁定会防止应用程序出现死锁。
应用程序需要小心使用复杂对象,例如,集合.集合没有被设计为供多线程同时访问.
利用方法Synchronized()创建集合对象线程安全版本
sortedlist ApplicationValue =new SortedList();
ApplicationValue.Add("1","a");
ApplicationValue.Add("2","b");
ApplicationValue.Add("3","c");
ApplicationValue=SortedList.Synchronized(ApplicationValue);
联系方式:
http://www.cnblogs.com/aierong
aierong@2118.cn
aierong@hotmail.com
QQ:114298
·存储过程 (1696篇文章)
·网络存储—光纤通道 (1723篇文章)
·.NET移动与嵌入式技术 (4937篇文章)
·.NET开发手册 (4730篇文章)
·ASP.NET教程 (6651篇文章)
·服务器存储专栏 (6211篇文章)
·.NET应用研究 (421篇文章)
·ASP.NET应用篇 (2067篇文章)
·存储方案 (376篇文章)
·ASP.NET 2.0中Gridview控件高级技巧 (4713次浏览)
·从零开始学ASP.NET(基础篇) (4702次浏览)
·ASP.NET2.0连接SQL Server数据库详解 (2032次浏览)
·ASP.NET教程第一讲 ASP.NET简介 (1918次浏览)
·在ASP.NET 2.0中实现数据的绑定 (1854次浏览)
·ASP.NET Session详解 (1012次浏览)
·ASP.NET教程第四讲 数据绑定 Data (838次浏览)
·DateDiff 函数详解 (681次浏览)
·面试ASP.NET程序员的笔试题和机试题 (64次浏览)
·ASP.NET 2.0中Gridview控件高级技巧 (4713次浏览)
·从零开始学ASP.NET(基础篇) (4702次浏览)
·ASP.NET2.0连接SQL Server数据库详解 (2032次浏览)
·ASP.NET教程第一讲 ASP.NET简介 (1918次浏览)
·在ASP.NET 2.0中实现数据的绑定 (1854次浏览)
·ASP.NET Session详解 (1012次浏览)
·ASP.NET教程第四讲 数据绑定 Data (838次浏览)
·DateDiff 函数详解 (681次浏览)
·关于ASP.NET技术的学习顺序问题 (255次浏览)
·ASP.NET 2.0中Gridview控件高级技巧 (4713次浏览)
·从零开始学ASP.NET(基础篇) (4702次浏览)
·ASP.NET2.0连接SQL Server数据库详解 (2032次浏览)
·ASP.NET教程第一讲 ASP.NET简介 (1918次浏览)
·在ASP.NET 2.0中实现数据的绑定 (1854次浏览)
·ASP.NET Session详解 (1012次浏览)
·ASP.NET教程第四讲 数据绑定 Data (838次浏览)
·DateDiff 函数详解 (681次浏览)
·关于ASP.NET技术的学习顺序问题 (255次浏览)
·ASP.NET教程第四讲 数据绑定 DataBind 07-22
·ASP.NET2.0中控件的简单异步回调 07-21
·慎用ASP.Net的validateRequest=“false” 07-21
·在ASP.NET中使用Memcached 07-21
·DateDiff 函数详解 07-20
·ASP.NET Session详解 07-19
·ASP.NET2.0连接SQL Server数据库详解 07-18
·ASP.NET教程第一讲 ASP.NET简介 07-18
·在ASP.NET 2.0中实现数据的绑定 07-18




