System.InvalidOperationException: Sammlung wurde geändert

Beim Auflisten durch eine Warteschlange tritt eine folgende Ausnahme auf:

System.InvalidOperationException: Sammlung wurde geändert; Aufzählungsoperation wird möglicherweise nicht ausgeführt

Hier ist der Code-Auszug:

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:   }

Ich denke, ich verstehe das Problem - Ändern der Hashtabelle anaction.Status = RecordStatus.Batched, der MoveNext () am Enumerator durcheinander bringt. Die Frage ist, wie setze ich dieses "Muster" richtig um?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage