Если вы храните сеанс на сервере базы данных или сервере состояний, событие Session_End не будет запущено. Иначе я думаю, что не должно быть никаких проблем.
Кроме того, увеличивая / уменьшая счетчик, вы должны получить блокировку для объекта, подобного этому -
lock(<some shared object>)
{
counter++;
}
Вы также можете попробовать взглянуть на this .