HttpapplicationState - Почему состояние гонки существует, если оно безопасно?

StackOverflow https://stackoverflow.com/questions/1524922

Вопрос

Я только что прочитал статью, в которой описывается, как httpapplicationstate AcquireRead() / AcquireWrite() функции для управления параллельным доступом. Это продолжает объяснять, что в некоторых условиях нам нужно использовать объяснение Lock() а также Unlock() на объекте приложения, чтобы избежать условия гонки.

Я не могу понять, почему условие гонки должно существовать для состояния приложения, если объект неявно обрабатывается.

Может ли кто -нибудь объяснить мне это? Зачем мне когда -либо использовать Application.Lock() а также Application.Unlock() ? Спасибо !

Это было полезно?

Решение

Методы приобретения и приобретения написаны во внутреннем классе httpapplicationStateLock, поэтому вы не используете их сами. Они синхронизируют доступ, но только для одного чтения или записи. Из вашего кода вы используете методы блокировки и разблокировки, если вам нужно синхронизировать доступ.

Обычно вам нужно синхронизировать доступ, если вы меняете что -то, что не является ни одной чтением или записи, например, добавление двух элементов приложения, которые полагаются друг на друга, или сначала проверить, существует ли элемент, а затем добавьте его:

Application.Lock()
if (Application["info"] == null) {
   Application.Add("info", FetchInfoFromDatabase());
}
Application.Unlock();

Другие советы

HttpapplicationState - где глобально доступа переменные, они видны всем

Пользователи, которые используют приложение. Поэтому, чтобы избежать состояния гонки при изменении

значение переменных. Нам нужны некоторые меры предосторожности, вот почему мы используем

Application.lock () и после выполненной работы, выпустив одну и ту же переменную для других в

очередь с использованием application.unlock ()

Application.Lock()
Application("VisitorCount") = Convert.ToInt32(Application("VisitorCount")) + 1
Application.UnLock()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top