програмирование Add под С#

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
luda75
Интересующийся
Сообщения: 34
Зарегистрирован: 04 окт 2010, 16:14
Репутация: 0
Откуда: Беларусь,Гродно

програмирование Add под С#

Сообщение luda75 » 19 дек 2017, 16:37

создаем под ArcGis 10.3.1 button
в цикле вызывается поиск по фильтру, создается IFeatureCursor
на 226 шаге цикла вылетает ошибка, решили что надо удалять (dispose) IFeatureCursor
Помогите правильно реализовать
1.jpg
1.jpg (375.95 КБ) 272 просмотра
2.jpg
2.jpg (380.8 КБ) 272 просмотра
error.jpg
error.jpg (643.71 КБ) 272 просмотра

freeExec
Гуру
Сообщения: 663
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 95
Откуда: Ульяновск

Re: програмирование Add под С#

Сообщение freeExec » 19 дек 2017, 18:41

А вы не пробовали сначала проверить количество записей, а уже потом создавать сам курсор. Ну и просто глаз дёргается от FeatureCount в цикле.

Monstria
Активный участник
Сообщения: 126
Зарегистрирован: 17 май 2011, 06:22
Репутация: 47
Откуда: Нижний Новгород

Re: програмирование Add под С#

Сообщение Monstria » 21 дек 2017, 06:42

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) 'Освобождаем курсор

luda75
Интересующийся
Сообщения: 34
Зарегистрирован: 04 окт 2010, 16:14
Репутация: 0
Откуда: Беларусь,Гродно

Re: програмирование Add под С#

Сообщение luda75 » 21 дек 2017, 16:22

Огромное спасибо! это то, что нужно!

Ответить

Вернуться в «ArcGIS»