Nigrimmist
@Nigrimmist
Asp.net senior developer

Asp.net singleton?

Добрый день хабравчане, столкнулся с такой проблемой:


В asp.net mvc3 имеется вполне себе стандартный синглетон класс, в который что-то кладётся на request и что-то изымается раз в 30 минут в другом потоке.


Проблема в том, что созданный в application_start поток видит синглетон как чистый, а все пользовательские запросы — как заполненный (так и должно быть). Что может быть не так? Почему я не могу в потоке получить корректный экземпляр синглтона.


Собственно вот он сам, вполне стандартный:

private static MemoryManager _instance;

        public static MemoryManager Instance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = new MemoryManager();
                }
                return _instance;
            }
        }



*нужен он мне как замена HttpApplicationState

Update: Уже не актуально. Автору руки оторвать и к батарее привязать.
  • Вопрос задан
  • 3720 просмотров
Пригласить эксперта
Ответы на вопрос 2
Shedal
@Shedal
Из MSDN:
The Application_Start and Application_End methods are special methods that do not represent HttpApplication events. ASP.NET calls them once for the lifetime of the application domain, not for each HttpApplication instance.
То есть, ваш поток, скорее всего, создаётся в отдельном процессе — не в том, в котором крутится ваш конкретный HttpApplication instance.
Попробуйте вместо этого создавать поток в методе Init(), должно помочь.
Ответ написан
megahertz
@megahertz
full stack разработчик
Могу ошибаться, так как не спец в .NET, но может дело в потоконебезопасности? habrahabr.ru/post/125421/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы