Страница 1 из 1
програмирование Add под С#
Добавлено: 19 дек 2017, 16:37
luda75
создаем под ArcGis 10.3.1 button
в цикле вызывается поиск по фильтру, создается IFeatureCursor
на 226 шаге цикла вылетает ошибка, решили что надо удалять (dispose) IFeatureCursor
Помогите правильно реализовать
- 1.jpg (375.95 КБ) 3117 просмотров
- 2.jpg (380.8 КБ) 3117 просмотров
- error.jpg (643.71 КБ) 3117 просмотров
Re: програмирование Add под С#
Добавлено: 19 дек 2017, 18:41
freeExec
А вы не пробовали сначала проверить количество записей, а уже потом создавать сам курсор. Ну и просто глаз дёргается от FeatureCount в цикле.
Re: програмирование Add под С#
Добавлено: 21 дек 2017, 06:42
Monstria
luda75 писал(а): ↑19 дек 2017, 16:37
Помогите правильно реализовать
Ну для того что бы видеть ошибку нужен код - на скринах вовсе не тот код который вызывает исключение (хотя возможно именно тут происходит исключение, но не видно откуда идут параметры функций)
Для работы с курсорами и последующим освобождением ресурсов я обычно использую следующию конструкцию -
Код: Выделить всё
'Dim FC As IFeatureClass 'Тут присваиваем значение для класса
Dim cur = FC.Search(Nothing, False) 'Выборка по всему классу, замените Nothing на фильр для выборки по условиям
Dim cur = FC.Update(Nothing, False) 'Выборка для изменения объектов
Dim feat As IFeature = cur.NextFeature
feat = cur.NextFeature ' Получаем первый объект, nothing если его нет
While feat IsNot Nothing
'Выполняем алгоритмы действий с объектом
'// обязательные действия в конце цикла
' Если происходит изменения объекта
'cur.UpdateFeature(feat)
' Получаем следующий объект
feat = cur.NextFeature
End While
System.Runtime.InteropServices.Marshal.ReleaseComObject(cur) 'Освобождаем курсор
Re: програмирование Add под С#
Добавлено: 21 дек 2017, 16:22
luda75
Огромное спасибо! это то, что нужно!