|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.04.2019, 11:51 | #1 |
Форумчанин
Регистрация: 09.02.2011
Сообщений: 150
|
“Collection was modified; enumeration operation might not execute” из System.Data.TypedTableBase<>
У меня есть .NET 4.0 assembly; она зарегистрирована GAC и работает как часть BizTalk “orchestration”.
Иногда в ней возникает такая ошибка - “Collection was modified; enumeration operation might not execute. : System.InvalidOperationException: Collection was modified; enumeration operation might not execute.”. I cannot reproduce it; when I run the same processing of the same data, my assembly does not generate the error in this place. Ошибка происходит при вызове ‘.Where(<condition>).ToArray()’ для объекта datatable – класс System.Data.TypedTableBase<MyDataRo wClass>. .................. Код:
Объект ‘instances’ это dataset – мой класс производный от System.Data.DataSet. Property ‘instances.WorkContributors’ это объект datatable – класс System.Data.TypedTableBase<MyDataRo wClass>. Класс MyDataRowClass - производный от System.Data.DataRow. Сall stack после ошибки: Collection was modified; enumeration operation might not execute. : System.InvalidOperationException: Collection was modified; enumeration operation might not execute. at System.Data.RBTree`1.RBTreeEnumerat or.MoveNext() at System.Linq.Enumerable.<CastIterato r>d__97`1.MoveNext() at System.Linq.Enumerable.WhereEnumera bleIterator`1.MoveNext() at System.Linq.Buffer`1..ctor(IEnumera ble`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at MyProduct.FileParser.Types.CWR.PWRT ype.GetPublishers(CWRWorkInstances instances, Nullable`1 setTypeGroupId) at MyProduct.FileParser.Validation.Con create.PwrTypeValidation.ValidatePu blisherNumber() at MyProduct.FileParser.Validation.Con create.PwrTypeValidation.Validate() at MyProduct.FileParser.Types.CWR.PWRT ype.StoreRecord(CWRWorkInstances workInstances, CWRWorkParsingContext context) at MyProduct.FileParser.Groups.CWR.NWR Group.StoreGroup(Int32 workBatchID, CWRFileCommonData commonData) at MyProduct.FileParser.CWRParser.Proc essCWRFile(String fileName, Boolean wait, Boolean deleteFile, String sourceFileName) Не могу понять почему ошибка случилась; и почему она не воспроизводима (при перезапуске на тех же данных). Сама ошибка “Collection was modified; enumeration operation might not execute.” мне понятна; но мой код же не должен к ней приводить. К ней должно привести что-то такое: Код:
|
14.04.2019, 03:08 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
внутри foreach низя удалять записи из этой же коллекции.
как вариант: поменять цикл на for с декрементом (от последней строки к первой). |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Необработанное исключение типа "System.FormatException" произошло в System.Data.dll - Visual C++ БД | zendau | Общие вопросы .NET | 3 | 30.06.2017 21:54 |
Необработанное исключение типа "System.ArgumentException" в System.Data.dll | max_prorok | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 3 | 23.09.2014 09:45 |
После обновления System.Data.Entity.Database.Default ConnectionFactory является устаревшим | Onni | ASP.NET | 0 | 24.11.2013 13:45 |
References на проекте System.Data.SQLite | Medet_man | C# (си шарп) | 0 | 06.06.2012 10:05 |
System.data.SqlServerCe, version=3.5.1.0 | IntoTheRain | Общие вопросы C/C++ | 0 | 07.09.2009 15:55 |