програмирование 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 КБ) 425 просмотров
2.jpg
2.jpg (380.8 КБ) 425 просмотров
error.jpg
error.jpg (643.71 КБ) 425 просмотров

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

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

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

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

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

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»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя