【发布时间】:2011-11-25 19:46:46
【问题描述】:
在浏览我的一个项目时,偶然发现了我以前从未见过的文件 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 文章,它确实解释了它允许您创建“线程安全、线程特定的存储”,但没有解释为什么或如何。
那么请有人好心解释一下这个类的目的是什么,它是如何工作的,以及在非设计者生成的代码中这个类是否有任何适当的使用场景?
【问题讨论】:
-
我的猜测是代码是从这里借用/翻译的:bartdesmet.net/blogs/bart/archive/2006/03/14/3824.aspx
-
它是使 My 命名空间在 VB 中工作的内部管道的一部分。它没有什么有趣的,只是一个具有远程意识的单例提供者,并不是所有线程安全的。今天你会考虑
Lazy<T>类来完成同样的事情。
标签: c# .net vb.net thread-safety designer