Вопрос из области ArcObject

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
wladfm
Участник
Сообщения: 69
Зарегистрирован: 04 июл 2016, 16:02
Репутация: 8

Вопрос из области ArcObject

Сообщение wladfm » 29 май 2017, 10:26

Добрый день. В ходе разработки кнопки для ArcMap наткнулся на небольшую проблему.
Суть вопроса. Необходимо выделенным объектам присвоить поле. Циклом прохожу по выделенным объектам. Но данные берутся из таблицы в той же БД (БД на MS Access). Выделенных объектов может быть много. Но в определенный момент вываливается исключение: Открытие большого количества таблиц невозможно. Я так понимаю это сам Access не дает. Вроде как надо закрыть открытые таблицы, но я так и не нашёл как. Для наглядности пример куска кода ниже:
ICursor Cursor;
IRow row;
IQueryFilter filter;
filter = new QueryFilter();
while (pFeature != null)
{
string kod = Convert.ToString(pFeature.get_Value(pFeature.Fields.FindField("Filds5")));
filter.WhereClause = "Fild1 = '" + kod + "'";
Cursor = Table1.Search(filter, false);
row = Cursor.NextRow();
if (row != null)
{
count++;
string f2 = Convert.ToString(row.get_Value(row.Fields.FindField("Filds2")));
string f3 = Convert.ToString(row.get_Value(row.Fields.FindField("Filds3")));
string outstr = f2 + " " + f3;
pFeature.set_Value(pFeature.Fields.FindField("Filds4"), outstr);
pFeature.Store();
}
pFeature = pEnumFeat.Next();
}

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

Re: Вопрос из области ArcObject

Сообщение freeExec » 29 май 2017, 11:23

Наверное нужно что-то делать с Cursor, т.к. вы не перебрали все его элементы, он остаётся висеть открытым.

wladfm
Участник
Сообщения: 69
Зарегистрирован: 04 июл 2016, 16:02
Репутация: 8

Re: Вопрос из области ArcObject

Сообщение wladfm » 29 май 2017, 13:43

freeExec писал(а):Наверное нужно что-то делать с Cursor, т.к. вы не перебрали все его элементы, он остаётся висеть открытым.
Я согласен, но вот что с ним делать? Метода нет, который бы его уничтожил.

wladfm
Участник
Сообщения: 69
Зарегистрирован: 04 июл 2016, 16:02
Репутация: 8

Re: Вопрос из области ArcObject

Сообщение wladfm » 29 май 2017, 18:03

Нашел как это сделать. Ссылка где нашел:
http://edndoc.esri.com/arcobjects/9.2/N ... b44a5b.htm

Когда курсор больше не нужен, то надо вставить следующий код:
Marshal.ReleaseComObject(Cursor);

Ответить

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

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

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