什么是神秘的ThreadSafeObjectProvider

时间:2011-09-27 07:58:23

标签: c# .net vb.net thread-safety designer

正在浏览我的一个项目,偶然发现了我以前从未见过的文件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文章,该文章解释了它允许您创建“线程安全,特定于线程的存储”,但不解释,原因或方法。

那么有人可以帮助解释这个类的目的是什么,它是如何工作的以及在非设计器生成的代码中是否有适当的使用场景?

1 个答案:

答案 0 :(得分:1)

当您希望特定变量是线程静态但需要为调用方法的每个上下文创建线程静态变量时。你会用这个。 这样可以保留每个上下文中的线程静态变量,其中将某些内容声明为线程静态只会将其保留为创建它的线程。

这是我的理解,说实话可能完全是假的,但我是如何解释它的,并作为我在WCF工作一段时间的原因的一个例子。

但是,如果必须的话,请尽量拒绝,但这是我最好的回答。

相关问题