gsh*_*arp 21 .net c# asp.net multithreading threadstatic
我有一个组件需要static在每个线程之前存储值.它是一个通用组件,可以在许多场景中使用,而不仅仅在ASP.NET中使用.
我正在考虑使用该[ThreadStatic]属性来实现我的目标.假设它在ASP.NET场景中也能正常工作,因为我假设每个Request都在自己的线程中调用.
经过一些研究后,我发现Scott Hanselman 撰写的这篇博客文章说[ThreadStatic]在ASP.NET中使用时要小心.
然而,大多数评论(在帖子下面)都不同意斯科特写的,说请求总是在一个线程中运行,并且该线程不会被另一个请求同时使用.这也是我所相信的,但我很乐意在这里对你的专家有一些看法.
Jon*_*eet 30
不,Scott是对的:一个请求肯定不需要在整个持续时间内在单个线程上运行.在这方面,ASP.NET是线程敏捷的.交换机只有几个点可以发生,但肯定会发生.(我已经为自己测试了.)
您可能希望阅读此博客文章和此Spring论坛主题以获取更多详细信息.
基本上你应该找到一种捕获上下文的不同方法.您的观点中的相关位可能在博客文章的末尾:
这是一个主要的PITA,因为据我所知,这意味着ASP.Net中'ThreadStatic'行为的唯一持久性选项是使用HttpContext.因此,对于您的业务对象,您要么遇到if(HttpContext.Current!= null)和System.Web引用(yuck),要么您必须为静态持久性提供某种提供者模型,这将需要在访问任何这些单例之前进行设置.双翘.
| 归档时间: |
|
| 查看次数: |
6567 次 |
| 最近记录: |