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?