Эта статическая переменная, ориентированная на многопотоковое исполнение в ASP.net c#

Я знаю, что на такого рода вещи много раз спрашивали здесь, но я полностью все еще не понимаю потокобезопасности в ASP.

C#: Где Util - статический класс, и theList - статический Список.

Util.theList= new List();
 Util.theList.Add(someObject);

Грузы страницы однажды, затем секунду спустя (спустя 1 СЕКУНДУ ПОСЛЕ ОБРАТНОЙ ПЕРЕДАЧИ) Util.theList населен, и страница перезагружается, чтобы связать с недавно населенными данными о списке:

this.Repeater.DataSource = Util.theList;
            this.Repeater.DataBind();

Каждый раз theList населен, он ИЛЛЮСТРИРУЕТСЯ ПРИМЕРАМИ:

Util.theList= new List(); 

If this is not thread safe how can I make it thread safe? I can't have the list non static and on the same page because of a separate problem where the data only binds each time if it is bound on page_load: OnDataBind only fires on first postback

1
nl ja de
Что делает наличие статического списка, покупают вас в этом случае? Вы иллюстрируете примерами список каждый раз так или иначе?
добавлено автор Kyle C, источник
то, что указывает usr, правильно, используйте ViewState для обратных передач.
добавлено автор Kyle C, источник
Привет Кайл, это предоставляет мне доступ к тому же самому списку на второй обратной передаче. Принимая во внимание, что, если это wasn' t статичный Список был бы пуст на второй обратной передаче
добавлено автор user1809104, источник

2 ответы

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

Если необходимо пройти, государство через обратные передачи используют ViewState или некоторый другой неглобальный механизм.

5
добавлено
Да Сессия неправильная, потому что объем неправильный. Вы don' t хотят поддержать эти данные для всех страниц пользовательские посещения. Вы хотите его для просто текущей страницы. Сессия часто неправильно используется, и она приводит к этим раздражающим приложениям где вы can' у t есть многократные открытые счета. Возможное решение: Сохраняйте словарь на сессии. У каждой страницы есть guid, который сохранен в состоянии отображения. Это дает вам лучший из обоих миров.
добавлено автор usr, источник
ASP.NET испытывает недостаток в особенности, названной "разговорами". Разговор - сессия всего для одной страницы или поток страниц. Словарь, который я предложил, является внедрением того понятия. Я рекомендую его, если вы не можете использовать более простой ViewState (почему нет?).
добавлено автор usr, источник
usr, от этой связи:asp.net-tutorials.com/state/viewstate это указывает, что состояния отображения лучше всего используются для простых данных. Я wan' t, чтобы сохранить список сложных объектов, из которых та страница рекомендует, чтобы я использовал переменные Сессий, но мне, чтобы хранить эти данные в переменных сеанса, что-то вроде "хакерского проникновения"
добавлено автор user1809104, источник
Я буду делать попытку вашего решения, но не являюсь там никаким лучшим способом, которым я могу сделать это? единственная проблема состоит в том, что список только населен после page_load.
добавлено автор user1809104, источник

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

Однако в вашем случае, нет статические переменные не ориентированы на многопотоковое исполнение.

0
добавлено
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)