ASP.Net статические объекты - PullRequest
1 голос
/ 14 июня 2009

Я пытаюсь кэшировать некоторую информацию, которую я извлек из базы данных. Я решил использовать статический член List <> для хранения информации. Из своего опыта работы со списком <> в многопоточных приложениях я знаю, что мне нужно защитить доступ к нему с помощью оператора блокировки. Обращаюсь ли я с любым кодом в моем коде Asp.Net точно таким же образом? Будет ли работать оператор блокировки?

Ответы [ 3 ]

5 голосов
/ 14 июня 2009

Оператор блокировки вокруг метода List определенно сработает, но если вам нужна функциональность кэширования в приложении ASP.NET, я бы порекомендовал вам использовать класс Cache , который адаптирован к этой функции.

2 голосов
/ 14 июня 2009

Блокировка будет работать. Имейте в виду, что если есть несколько рабочих процессов, вы получите несколько версий списка. Каждый из них будет защищен собственным замком.

Довольно реальная опасность заключается в том, что если вы не снимите блокировку, все ваше веб-приложение может зависнуть. Пользователь может отключиться во время выполнения вашей страницы ASP.NET; так что будьте осторожны с исключениями, возникающими в неожиданное время.

0 голосов
/ 14 июня 2009

Это зависит от того, собираетесь ли вы изменять Список. Вот хорошее обсуждение этой темы: Нужна ли мне блокировка списка? C #

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