Методы AcquireRead и AcquireWrite находятся во внутреннем классе HttpApplicationStateLock, поэтому вы сами их не используете. Они синхронизируют доступ, но только для одного чтения или записи. Из вашего кода вы используете методы Lock и Unlock, если вам нужно синхронизировать доступ.
Обычно вам необходимо синхронизировать доступ, если вы изменяете что-то, что не является единственным чтением или записью, например, добавление двух элементов приложения, которые зависят друг от друга, или сначала проверка, существует ли элемент, а затем добавление:
Application.Lock()
if (Application["info"] == null) {
Application.Add("info", FetchInfoFromDatabase());
}
Application.Unlock();