作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
浏览我的一个项目时,偶然发现了我以前从未见过的文件 MyWebExtentions 中的以下代码(和类)。
Private s_Computer As New ThreadSafeObjectProvider(Of Global.Microsoft.VisualBasic.Devices.ServerComputer)
''' <summary>
''' Returns information about the host computer.
''' </summary>
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend ReadOnly Property Computer() As Global.Microsoft.VisualBasic.Devices.ServerComputer
Get
Return s_Computer.GetInstance()
End Get
End Property
所以我尝试查看对象资源管理器但它没有出现,搜索 MSDN 什么也没有,试过 stackoverflow 也没有。最后我确实找到了this这篇文章确实解释了它允许您创建“线程安全的、线程特定的存储”,但没有解释、为什么或如何。
那么,有人可以解释一下这个类的目的是什么、它是如何工作的,以及在非设计人员生成的代码中是否有适合这个类的使用场景?
最佳答案
当你希望一个特定的变量是线程静态的,但需要为调用你的方法的每个上下文创建一个线程静态变量时。你会用这个。这会在每个上下文中保留线程静态变量,其中将某些内容声明为线程静态变量只会将其保留在创建它的线程中。
这是我的理解,老实说,这可能完全是假的,但这是我解释它的方式,并作为我放弃在 WCF 工作一段时间的一个例子。
说真的,如果必须的话,请投反对票,但这是我最好的回答。
关于c# - 什么是神秘的ThreadSafeObjectProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7565882/
我是一名优秀的程序员,十分优秀!