System.InvalidOperationException: coleção foi modificada

Eu estou recebendo uma exceção seguinte ao enumerar através de uma fila:

System.InvalidOperationException: coleção foi modificada; operação de enumeração não pode executar

aqui está o trecho do código:

1:    private bool extractWriteActions(out List<WriteChannel> channelWrites)
2:    {
3:        channelWrites = new List<WriteChannel>();
4:        foreach (TpotAction action in tpotActionQueue)
5:        {
6:            if (action is WriteChannel)
7:            {
8:                channelWrites.Add((WriteChannel)action);
9:                lock(tpotActionQueue)
10:               {
11:                  action.Status = RecordStatus.Batched;
12:               }
13:           }
14:       }
15:       return (channelWrites.Count > 0);
16:   }

Eu acho que entendo o problema - alterando o hashtable emaction.Status = RecordStatus.Batched, que estraga o MoveNext () no enumerador. Pergunta é, como faço para implementar esse "padrão" corretamente?

questionAnswers(6)

yourAnswerToTheQuestion