首页 > 软件开发 > 编程语言 >

.net下如何在子线程里面使用到Session数据

来源:互联网 2023-03-17 00:28:06 250

请求到达服务器之后,主进程开启了子线程处理任务,这个子线程里面已经无法访问HttpContext对象,也就没有HttpRequest和HttpSessionState对象了,那么如何在多线程里面使用到Session数据呢?当然,通过创建线程的时候可以传递参数,但是参数较多,线程较多的时候,就比较棘手了。qHI办公区 - 实用经验教程分享!

.net下如何在子线程里面使用到Session数据qHI办公区 - 实用经验教程分享!

工具/原料

  • vs2010

方法/步骤

  • 1

    .net提供了一个类似Context(当前上下文的对象),CallContext对象,通过这个对象的方法可以写入值,供当前请求的子线程访问,CallContext.LogicalSetData(key, value),下面是微软官方文档和案例:qHI办公区 - 实用经验教程分享!

    .net下如何在子线程里面使用到Session数据qHI办公区 - 实用经验教程分享!

    .net下如何在子线程里面使用到Session数据qHI办公区 - 实用经验教程分享!

  • 2

    主线程写入值到CallContextqHI办公区 - 实用经验教程分享!

    object userid = Session["userId"];qHI办公区 - 实用经验教程分享!

    CallContext.LogicalSetData("userid", userid);qHI办公区 - 实用经验教程分享!

    .net下如何在子线程里面使用到Session数据qHI办公区 - 实用经验教程分享!

  • 3

    子线程里面读取值的方法是qHI办公区 - 实用经验教程分享!

    CallContext.LogicalGetData(key);qHI办公区 - 实用经验教程分享!

    .net下如何在子线程里面使用到Session数据qHI办公区 - 实用经验教程分享!

  • 4

    继续封装一个方法,兼容主线程和子线程,代码就可以公用qHI办公区 - 实用经验教程分享!

    .net下如何在子线程里面使用到Session数据qHI办公区 - 实用经验教程分享!

  • 4该信息未经许可获取自百度经验
  • 5

    还可以封装传递更多全局的参数到子线程,比如子线程需要写日志需要ip、url等信息。qHI办公区 - 实用经验教程分享!

    这个方法在请求到达服务器时,统一调用。qHI办公区 - 实用经验教程分享!

    .net下如何在子线程里面使用到Session数据qHI办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!qHI办公区 - 实用经验教程分享!


    标签: 编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码