A Page
экземпляр будет создаваться для каждого запроса, поэтому при условии, что ваша логика находится в элементе экземпляра и не имеет доступа ни к чему общему, блокировка не требуется.
При обращении к общему ресурсу есть несколько способов принудительной блокировки. Одним из способов является использование оператора lock
, например
private static someObject = new Object();
public void SomeMethod()
{
lock(someObject)
{
// do something with your shared resource.
}
}
Вообще говоря, вы должны стремиться избегать максимально возможного использования блокировок (хотя во многих случаях требуется блокировка).
EDIT:
Если вы храните свои данные в источнике данных, который поддерживает транзакции, например, как база данных, тогда вы сначала захотите проверить, что то, что пользователь пытается купить, еще не было куплено за время между нажатием кнопки «да» на странице и вашим приложением, получающим ответ. Итак, вам нужно проверить источник данных, чтобы увидеть, если он еще не был куплен, а если нет, то «купить» товар для пользователя. Это должно быть сделано внутри транзакции, чтобы она была атомарной, и поэтому вы берете деньги со счета пользователя только в том случае, если действие по «покупке» предмета выполнено успешно.