当前位置: 首页 > news >正文

免费个人建站系统怎么做网站的学校的大图

免费个人建站系统,怎么做网站的学校的大图,u盘做网站,ps做网站今天在对项目代码进行异步化改进的时候#xff0c;遇到一个奇怪的问题#xff08;莫笑#xff0c;以前没遇过#xff09;#xff0c;正如标题一样#xff0c;HttpContext.Current 在 await 异步执行之后#xff0c;就会变为 null。 演示代码#xff1a; public async T…今天在对项目代码进行异步化改进的时候遇到一个奇怪的问题莫笑以前没遇过正如标题一样HttpContext.Current 在 await 异步执行之后就会变为 null。 演示代码 public async TaskIEnumerablestring Get(){await DoWaitAsync();DoWork();return new string[] { value1, value2 };}private Task DoWaitAsync(){returnTask.Factory.StartNew(() {// null !!var httpCtx System.Web.HttpContext.Current;Thread.Sleep(1000);});}public void DoWork(){//Not nullvar httpCtx System.Web.HttpContext.Current;} HttpContext.Current 这个东西我们并不陌生在进行 ASP.NET 应用程序开发的时候我们经常会用到比如获取当前请求的一些值首先它是一个线程静态属性thread-static variable注意其中的关键字当前请求和线程也就是说它是和请求线程相关的在 ASP.NET 应用程序中一个请求线程会贯穿整个请求过程所以我们可以在这个请求的任何地方都可以访问到 HttpContext.Current这也就是它的“强大之处”但是如果涉及到异步多线程呢就不是这么回事了因为 HttpContext.Current 依附的是当前请求的主线程当我们使用 await 异步执行一些代码的时候再次执行下面的代码其实就不是当前请求线程了所以我们再次访问 HttpContext.Current 的时候就变为 null 了这个问题告诫我们ASP.NET 应用程序中如果进行异步化使用 HttpContext.Current 一定要小心谨慎。 需要注意的是HttpContext.Current 在没有进行 await 操作的时候都是可以获取到值的。如果我们的 ASP.NET 应用程序进行了异步化然后还必须用到 HttpContext.Current那我们该怎么解决这个问题 解决的方式有很多如果应用程序很简单我们可以在 await 操作之前先用变量存储 HttpContext.Current用到的地方直接用这个变量就行了当然这不是一个“解决问题”的方法还有一种是用 Cache可以参考system-web-httpcontext-current-nulls-itself-after-checking-for-a-cache我觉得这种方式也是“瞎忽悠”没有从根本问题上进行解决。 其实想想问题的根源就是如何在多个线程中共享一个 HttpContext.Current这个在 MSDN 中表述为共享/同步上下文Synchronization Context You can use the TaskScheduler.FromCurrentSynchronizationContext method to specify that a task should be scheduled to run on a particular thread. This is useful in frameworks such as Windows Forms and Windows Presentation Foundation where access to user interface objects is often restricted to code that is running on the same thread on which the UI object was created. For more information, see How to: Schedule Work on a Specified Synchronization Context. 那我们如何在 ASP.NET 应用程序中进行运用呢答案很简单我们只需要在 web.config 中指定 targetFramework 版本为 4.5 即可 httpRuntime targetFramework4.5 / 或者在 appSettings 中添加如下 key测试可用 add keyaspnet:UseTaskFriendlySynchronizationContext valuetrue / 参考资料 Why HttpContext.Current be null?Why is HttpContext.Current null after await?Why thread context does not flow to background thread in async/await?HttpContext.Current并非无处不在
http://www.yutouwan.com/news/162090/

相关文章:

  • 视频网站建设 知乎茶叶网页设计模板图片
  • 查询行业信息的网站网上装修公司网站策划书
  • 网站建设公司中心网站制图软件
  • 哪个网站下载软件最安全教做美食的网站
  • 建设旅游网站的功能定位电子商务公司的名字
  • 合租网站设计怎样上传wordpress模板
  • 新西兰网站开发专业哪里有网络推广
  • 网站建设实习目的门户网站的建设与维护
  • 高端网站哪个比较好北京市信息网
  • 公司网站制作有哪些注意事项百度软文推广怎样收费
  • 做网站都有跳转链接如何在百度做网站推广
  • 做网站好还是网页好如何成为网页设计师
  • wordpress增加产品模块魔方优化大师官网
  • 品牌建站创立一个公司需要多少钱
  • 集团企业网站建设方案中企动力近期做的网站
  • 哪个网站做logo设计师项目管理师pmp报考条件
  • 专做眼镜的网站工邦邦官网
  • 如何学做网站外包贵州seo和网络推广
  • 最新网站域名通辽做家教的网站
  • 如何做简洁网站手机网站定制方案
  • 毕业设计 建设网站新冠最新消息实时动态
  • 90设计网站官网首页网站建设的费用明细
  • 用wordpress做答题网站做网站市场分析
  • 个人免费网站申请注册php网站开发
  • 银川网站设计怎么样百度推广渠道户
  • 网站地图后缀wordpress 后台列表
  • 手机软件开发平台网页seo如何优化
  • 查一下红之易道学做的什么网站上海浦东建筑建设网站污水处理工程
  • 门户网站底部小程序商城系统平台
  • 辛集网站建设精能集团有限公司两学一做网站