Обычно я бы предложил обрабатывать выбранные элементы в списке, например, если вы удаляете их по мере их обработки:
for(int x = listId.SelectedIndex; x >= 0; x = listId.SelectedIndex)
{
// Do your processing here
listId.Items.RemoveAt(x);
listId.Update();
}
Но похоже, что вы обрабатываете каждый элемент в списке. Если это так, может быть, это уместно:
while (listId.Items.Count > 0)
{
listId.SelectedIndex = 0;
listId.Update();
// Do your processing here
listId.Items.RemoveAt(0);
}