C # .NET Singleton жизнь пула приложений - PullRequest
2 голосов
/ 03 июня 2011

Я хочу создать синглтон, который остается живым в течение всего жизненного цикла пула приложений, используя HttpContent.Current.Cache.

Где бы я создал класс и как его реализовать?Я понимаю, как реализовать синглтон, но я не слишком знаком с многопоточностью и httpcontent.current.cache.

Спасибо!

Ответы [ 3 ]

1 голос
/ 03 июня 2011

Неважно, куда поместить одноэлементный код.

Как только вы получите доступ к instance и тип будет инициализирован, он останется в памяти на всю жизнь вашего ApplicationDomain,Так что используйте его как обычный класс, а остальное делается при первом использовании.

0 голосов
/ 03 июня 2011

Возможно, вы слишком усложняете проблему? Я не уверен, почему вам нужно использовать кэш. Не могли бы вы просто добавить файл в папку App_Code для размещения вашего класса, например, "mSingleton.cs"

public sealed class mSingleton
{
    static readonly mSingleton _instance = new mSingleton();

    public int MyVal { get; set; }

    public static mSingleton Instance
    {
        get { return _instance; }
    }
    private mSingleton()
    {
        // Initialize members, etc. here.
    }
}

Тогда он является глобальным для всего вашего кода и страниц, сохраняет состояние до тех пор, пока пул приложений не перезапустится или не произойдет перестройка приложения (я не знаю, вызывает ли это приложение также и перезагрузку - если это так, то это соответствует в любом случае), не нужно добавлять ни в кеш, ни в приложение, ни в переменные сеанса .. нет беспорядочной обработки

Вы можете сделать это на page_load в любом файле aspx.cs и обновить его, чтобы счетчик увеличивался при каждом подтверждении состояния:

mSingleton getMyObj = mSingleton.Instance;
getMyObj.MyVal++;
0 голосов
/ 03 июня 2011

Я бы не использовал кеш для этого.Я бы порекомендовал статический класс или синглтон со статическим getInstance ().

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