Страница 1 из 1

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

Добавлено: 19 дек 2017, 16:37
luda75
создаем под ArcGis 10.3.1 button
в цикле вызывается поиск по фильтру, создается IFeatureCursor
на 226 шаге цикла вылетает ошибка, решили что надо удалять (dispose) IFeatureCursor
Помогите правильно реализовать
1.jpg
1.jpg (375.95 КБ) 3117 просмотров
2.jpg
2.jpg (380.8 КБ) 3117 просмотров
error.jpg
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
Огромное спасибо! это то, что нужно!