Что такое таинственный ThreadSafeObjectProvider - PullRequest
4 голосов
/ 27 сентября 2011

Просматривал мой проект и наткнулся на следующий код (и класс) внутри файла 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 и ничего.В конце концов я нашел эту статью, в которой объясняется, что она позволяет вам создать «потокобезопасное, специфичное для потока хранилище», но не объясняется, почему и как.

Так можеткто-то, пожалуйста, будьте любезны объяснить, какова цель этого класса, как он работает и есть ли подходящие сценарии использования этого класса в не сгенерированном дизайнером коде?

1 Ответ

1 голос
/ 15 августа 2017

Если вы хотите, чтобы конкретная переменная была статичной для потока, но вам необходимо создать статическую переменную потока для каждого контекста, который вызывает ваш метод. Вы бы использовали это. Это сохраняет статические переменные потока для контекста, где объявление чего-либо как статического потока сохранит его только для потока, в котором оно было создано.

Это мое понимание, которое, честно говоря, могло бы быть полностью поддельным, но именно так я его интерпретировал и служит примером того, почему я некоторое время работал в WCF.

Если серьезно, понизьте это, если хотите, но это моя лучшая попытка ответить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...