Необходимо увеличить итератор сначала (со мной ++) и затем удалять предыдущий элемент (например, при помощи возвращенного значения от меня ++). Можно изменить код на некоторое время цикл как так:
std::list<item*>::iterator i = items.begin();
while (i != items.end())
{
bool isActive = (*i)->update();
if (!isActive)
{
items.erase(i++); // alternatively, i = items.erase(i);
}
else
{
other_code_involving(*i);
++i;
}
}
Вам явно необходимо настроить IIS для активации без HTTP. Я не знаю всех подробностей, о которых я думаю, но в основном вам нужно использовать appcmd для настройки и включения активации привязки net.msmq.
Проверьте этот пост в блоге или этот скринкаст должен предоставить вам все подробности.
Это поможет кому-нибудь сэкономить часы, на которые у меня ушло: http://msdn.microsoft.com/en-us/library/ms731053.aspx