Skip Navigation Links
技术文档
·网站建设
·软件使用
·图形设计
·程序开发
·网络应用
·电脑技巧
 
公司介绍
·公司简介
·索仕SRCOS网络应用平台
·索仕网站管理系统
·影视广告制作
·联系我们
 
 

.net中异步读取缓存(cache)

4/27/2010 7:07:20 PM

 

某天,小菜在写一个异步程序的时候,突然提出这样的一个问题,以前在page类或者当前上下文的,

  那我在异步岂不是要把当前上下文传进去才能读取吗?如果异步里面方法多的话,岂不是每一个方法都要设一个HttpContext的参数?

  于是,他就有了下面的这段程序的写法 

	
		    protected void Page_Load(object sender, EventArgs e)
    {
     ..... System.Threading.ThreadPool.QueueUserWorkItem(AsyncHandler, HttpContext.Current,list); ...... } protected void AsyncHandler(object _obj) {
     object[] obj =_obj as object[]; HttpContext context = obj[0] as HttpContext; object userObj = context.Cache["userObj"] ; ...... }

   当然, 小菜当然是提这问题的时候没有经过思考的,还没想起cache是存在于app block里面的,kakim提示他用强大的Reflector工具查看一下,上下文的cache里面做了点什么事?

  小菜同学马上明白他的意思了,直接反翻译HttpContext.Cache,找到了下面的一段反编译的程序 

	
		public Cache Cache
{
    get
    {
        return HttpRuntime.Cache;
    }
}

好了,一切真相大白,现在问题解决了,可以省掉HttpContext拆箱的过程了,直接用HttpRuntime.Cache对象就可以访问缓存时面的数据

所以上面的异步方法就可以改成下面的

 

 

	
		   protected void AsyncHandler(object obj)
    {
        ......
        object userObj = HttpRuntime.Cache["userObj"] ;
        ......

    }
作者:kakim 来源:博客园
 
 
 
昆明索仕科技开发有限公司 版权所有 Copyright© 2002-2010 Kunming Source Technology Exploitive Co.,LTD. All Rights Reserved.
电话:0871-5627877 业务QQ:163871 联系我们
本站基于:索仕网站信息管理系统建设 版本 2.0.4325