Если ваша страница не изменяет никакие переменные сеанса, вы можете отказаться от большей части этой блокировки.
<% @Page EnableSessionState="ReadOnly" %>
Если ваша страница не читает никаких переменных сеанса, вы можете полностью отказаться от этой блокировки, для этой страницы.
<% @Page EnableSessionState="False" %>
Если ни одна из ваших страниц не использует переменные сеанса, просто отключите состояние сеанса в файле web.config.
<sessionState mode="Off" />
Мне интересно, что делатьВы думаете, что «коллекция ThreadSafe» могла бы стать поточно-ориентированной, если бы она не использовала блокировки?
Редактировать: Я, вероятно, должен объяснить, что я подразумеваю как «отказаться от большей части этой блокировки».Любое количество страниц только для чтения или без сеанса может быть обработано для данного сеанса одновременно, не блокируя друг друга.Однако страница чтения-записи-сеанса не может начать обработку до тех пор, пока не будут выполнены все запросы только для чтения, и во время ее работы она должна иметь монопольный доступ к сеансу этого пользователя, чтобы поддерживать согласованность.Блокировка отдельных значений не будет работать, потому что, если одна страница изменит набор связанных значений в группе?Как бы вы обеспечили, чтобы другие страницы, работающие одновременно, получали согласованное представление переменных сеанса пользователя?
Я бы посоветовал вам попытаться свести к минимуму изменение переменных сеанса после их установки, если это возможно.,Это позволит вам сделать большинство ваших страниц доступными только для чтения, что увеличит вероятность того, что несколько одновременных запросов от одного пользователя не будут блокировать друг друга.