如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 292 编程语言
请求到达服务器之后,主进程开启了子线程处理任务,这个子线程里面已经无法访问HttpContext对象,也就没有HttpRequest和HttpSessionState对象了,那么如何在多线程里面使用到Session数据呢?当然,通过创建线程的时候可以传递参数,但是参数较多,线程较多的时候,就比较棘手了。
.net提供了一个类似Context(当前上下文的对象),CallContext对象,通过这个对象的方法可以写入值,供当前请求的子线程访问,CallContext.LogicalSetData(key, value),下面是微软官方文档和案例:
主线程写入值到CallContext
object userid = Session["userId"];
CallContext.LogicalSetData("userid", userid);
子线程里面读取值的方法是
CallContext.LogicalGetData(key);
继续封装一个方法,兼容主线程和子线程,代码就可以公用
还可以封装传递更多全局的参数到子线程,比如子线程需要写日志需要ip、url等信息。
这个方法在请求到达服务器时,统一调用。
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
标签: 编程语言
相关文章
如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 292 编程语言
web图表开发工具FineReport:[11]连续分组,数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示,这样的报表可以通过相邻连续分组来实现。......
2023-03-17 514 编程语言