Вам разрешено изменять значение элемента в коллекции. Ошибка, которую вы получаете, означает, что элемент был добавлен или удален, т. Е. Была изменена сама коллекция, а не элемент внутри коллекции. Скорее всего, это вызвано тем, что другой поток добавляет или удаляет элементы в этой коллекции.
Вы должны заблокировать свою очередь в начале вашего метода, чтобы другие потоки не изменяли коллекцию во время доступа к ней. Или вы можете заблокировать коллекцию еще до вызова этого метода.
private bool extractWriteActions(out List<WriteChannel> channelWrites)
{
lock(tpotActionQueue)
{
channelWrites = new List<WriteChannel>();
foreach (TpotAction action in tpotActionQueue)
{
if (action is WriteChannel)
{
channelWrites.Add((WriteChannel)action);
action.Status = RecordStatus.Batched;
}
}
}
return (channelWrites.Count > 0);
}