Ошибка отсутствия индекса в System.Collections.Generic.List.Add (Object) - PullRequest
0 голосов
/ 06 июня 2009

При добавлении объекта в System.Collections.Generic.List

появляется ошибка «Нет индекса»
Dim myObj As New MyObject
Dim List As New List(Of MyObject)
List.Add(myObj)

Это сообщение об ошибке (переведено с моего системного языка):
«Индекс вне матричных индексов»
«Матрица происхождения не была достаточно длинной»
«Проверить srcIndex, размер и нижние пределы матрицы»

Разве .NET не должен автоматически изменять размер списка?

Я не могу повторить эту ошибку. Это происходит однажды в сотнях операций.
Это выполняется в потоках, но каждый поток имеет свой собственный список.
Я попробовал SyncLock в списке, но безрезультатно.

Кто-нибудь знает, в чем может быть проблема и как ее избежать?

1 Ответ

0 голосов
/ 06 июня 2009

Это звучит как проблема параллелизма. .Net автоматически изменяет размер базового массива, когда достигает емкости.

.Net коллекции не являются потокобезопасными (что будет в следующей версии .NET)

У вас есть блокировка, а также наборы? Если так, это должно работать. Вы также можете посмотреть на замки читателя, если хотите быть модным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...