EDIT Moja początkowa odpowiedź była błędna. Próbuję ponownie ...
Pod względem technicznym, jak wskazano @Curt, zmienna Shared
jest współużytkowana w instancjach klasy.
Jednak przy niezmienionym kodzie jest mniej prawdopodobne, że wartość zostanie udostępniona użytkownikom, ponieważ jest ona ustawiona na lokalną kopię każdego użytkownika wartości w ich sesji w Page_Init
.
Istnieje "warunek wyścigu", w którym po zainicjowaniu udostępnionej zmiennej UserNumber
w Page_Init
, a inny użytkownik przesyła żądanie, które aktualizuje wartość tej zmiennej z ich sesji, pierwszy użytkownik zobaczy drugiego użytkownika wartość. np. użytkownicy widzą wartości innych użytkowników dla współbieżnych żądań.
Zamiast tego zaleca się używanie ReadOnly
niewspólną właściwość, aby uzyskać wartość z sesji kiedyś:
Private mUserNumber As String
Public ReadOnly Property UserNumber As String
Get
If String.IsNullOrEmpty(mUserNumber) Then
mUserNumber = Session("UserNumber")
End If
Return mUserNumber
End Get
End Property
ta wykorzystuje wzorzec o nazwie „Lazy-loading”, którego używam w tylko do odczytu właściwości wiele na stronach, aby poprawić wydajność i czytelność kodu.
TAK; jako zmienna "Współdzielona" jest dostępna dla wszystkich instancji ... a więc dla wszystkich użytkowników aplikacji działających w tym samym procesie. –