Изменение данных состояния приложения

Изменение данных состояния приложения

В ходе выполнения Web-приложения с помощью членов типа HttpApplicationState вы можете программно модифицировать или удалить любые или даже все члены уровня приложения. Например, чтобы удалить конкретный элемент, нужно просто вызвать метод Remove(). Чтобы уничтожить все данные уровня приложения, вызовите RemoveAll().

private void CleanAppData() {

 // Удаление отдельного элемента по строковому имени.

 Application.Remove("SomeItemIDontNeed");

 // Удаление всех данных приложения.

 Application.RemoveAll();

}

Чтобы изменить значение существующей переменной уровня приложения, нужно присвоить новое назначение соответствующему элементу данных. Предположим, что ваша страница поддерживает еще один тип Button, который дает пользователю возможность изменить имя наиболее удачливого продавца. Обработчик события Click в этом случае выглядит так, как и ожидается.

protected void btnSetNewSP_Click(object sender, EventArgs e) {

 // Установка нового имени продавца.

 ((CarLotInfo)Application["CarSiteInfo"]).salesPersonOfTheMonth = txtNewSP.Text;

}

Запустив это Web-приложение, вы увидите, что переменная уровня приложения обновлена. К тому же, поскольку переменные приложения доступны для всех сеансов пользователей, если запустить три или четыре экземпляра Web-браузера, вы увидите, что при изменении имени лучшего продавца одним экземпляром все остальные экземпляры браузера после вторичного обращения к серверу тоже отобразят новое значение.

Следует понимать, что в той ситуации, когда множество переменных уровня приложения должно обновляться как единое целое, есть риск нарушения целостности данных (поскольку теоретически возможно, что данные уровня приложения могут измениться в момент получения к ним доступа со стороны другого пользователя). Можно, конечно, пойти длинным путем и вручную блокировать доступ, используя примитивы потоков из пространства имен System.Threading, но тип HttpApplicationState предлагает два метода, Lock() и Unlock(), которые автоматически гарантируют потоковую безопасность.

// Безопасный доступ к соответствующим данным приложения.

Application.Lock();

Application["SalesPersonOfTheMonth"] = "Maxine";

Application["CurrentBonusedEmployee"] = Application["SalesPersonOfTheMonth"];

Application.Unlock();

Замечание. Во многом аналогично оператору lock в C#, если после вызова Lock(), но перед вызовом Unlock() возникнет исключение, блокировка будет автоматически удалена.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Передача и получение пользовательских данных состояния

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Передача и получение пользовательских данных состояния Заключительным аспектом нашего рассмотрения асинхронных делегатов будет обсуждение последнего из аргументов метода BeginInvoke() (этот аргумент у нас до сих пор был равен null). С помощью этого параметра можно передать в


Добавление пользовательских данных состояния представлений

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Добавление пользовательских данных состояния представлений В дополнение к свойству EinableViewState базовый класс System.Web. UI.Control предлагает наследуемое свойство ViewState. Это свойство в фоновом режиме обеспечивает доступ к типу System.Web.UI.StateBag, представляющему все данные поля __VIEWSTATE.


Несколько слов о данных состояния элементов

Из книги Виртуальные машины [Несколько компьютеров в одном] автора Гультяев Алексей Константинович

Несколько слов о данных состояния элементов В ASP.NET 2.0 предлагается поддержка состояний элементов управления, а не только состояния представлений. Эта технология оказывается очень удобной при работе с созданными вами Web-элементами управления ASP.NET, которые должны


Поддержка данных состояния приложения

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Поддержка данных состояния приложения Тип HttpApplicationState предоставляет возможность совместного использования глобальной информации для множества сеансов в приложении ASP.NET. Например, можно иметь одну строку соединения, используемую всеми страницами приложения, один общий


Сохранение данных состояния с помощью ‹sessionState›

Из книги Принцип Касперского [Телохранитель Интернета] автора Дорофеев Владислав Юрьевич

Сохранение данных состояния с помощью ‹sessionState› Наиболее мощным элементом файла Web.config является ‹sessionState›. По умолчанию ASP.NET запоминает данные сеансового состояния с помощью *.dll в рамках рабочего процесса ASP.NET (aspnet_wp.exe). Подобно любому файлу *.dll. положительным моментом


Поддержка данных состояния Web-сервисов с помощью свойства EnableSession

Из книги Моделирование бизнес-процессов с BPwin 4.0 автора Маклаков Сергей Владимирович

Поддержка данных состояния Web-сервисов с помощью свойства EnableSession Вы, наверное, помните из главы 24 о том, что свойства Application и Session позволяют Web-приложению ASP.NET поддерживать данные состояния. Web-сервисы XML обеспечивают те же возможности с помощью базового класса


Создание приложения для просмотра данных

Из книги MySQL 5.0. Библиотека программиста автора Гольцман Виктор Иосифович

Создание приложения для просмотра данных В предыдущем примере показан простейший способ связывания данных на основе извлечения всей таблицы и отображения ее в элементе управления DataGrid. А как отобразить только одну запись? Для этого потребуется использовать элементы


Изменение состояния виртуальной машины

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Изменение состояния виртуальной машины В отличие от продуктов, рассмотренных в двух предыдущих главах, Parallels Workstation предоставляет минимальный набор средств для управления текущим состоянием виртуальной машины после ее запуска.Доступных вариантов всего три: выключение,


13.1.3. Опрос и изменение состояния потока

Из книги Домашний доктор для вашего ПК автора Виноградов Алексей Степанович

13.1.3. Опрос и изменение состояния потока В классе Thread есть несколько полезных методов класса. Метод list возвращает массив «живых» потоков, метод main возвращает ссылку на главный поток программы, который породил все остальные, а метод current позволяет потоку идентифицировать


2.2.5. Изменение файла данных отчета

Из книги автора

2.2.5. Изменение файла данных отчета Любой отчет RPTwin использует в качестве источника единственный файл данных (.LWD), имя которого указывается при создании отчета. Иногда необходимо использовать созданный шаблон отчета (файл .LWR.) для работы с различными наборами данных. RPTwin


2.6. Изменение данных

Из книги автора

2.6. Изменение данных В этом разделе вы познакомитесь с командами изменения, замещения и удаления строк таблицы. Начнем с рассмотрения команды UPDATE, которая позволяет установить новые значения в одной или нескольких строках, например, следующим образом:UPDATE <Имя таблицы>


Изменение владельца базы данных

Из книги автора

Изменение владельца базы данных Восстановленный файл базы данных или созданный из gbak имеет владельцем того пользователя, который выполнил восстановление. Следовательно, выполнение копирования и восстановления является механизмом для изменения владельца базы данных.!


Изменение установок базы данных

Из книги автора

Изменение установок базы данных Множество режимов команды gfix позволяет установить или изменить различные установки базы данных. Для выполнения таких команд требуются полномочия SYSDBA или владельца базы данных, а также исключительный доступ. Установка размера кэша по


5.3 Мониторинг состояния системы, устранение ошибок, восстановление утерянных файлов и защита данных Анализ состояния аппаратной части системы

Из книги автора

Введение Как и всякая техника, персональный компьютер нуждается в техническом обслуживании, настройке и наладке. Небрежное отношение к своей машине приводит к тому, что работа компьютера становится нестабильной и не эффективной. А потом происходит сбой, и компьютер