Добрый день. В ходе разработки кнопки для 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();
}
Вопрос из области ArcObject
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Вопрос из области ArcObject
Наверное нужно что-то делать с Cursor, т.к. вы не перебрали все его элементы, он остаётся висеть открытым.
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Re: Вопрос из области ArcObject
Я согласен, но вот что с ним делать? Метода нет, который бы его уничтожил.freeExec писал(а):Наверное нужно что-то делать с Cursor, т.к. вы не перебрали все его элементы, он остаётся висеть открытым.
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Re: Вопрос из области ArcObject
Нашел как это сделать. Ссылка где нашел:
http://edndoc.esri.com/arcobjects/9.2/N ... b44a5b.htm
Когда курсор больше не нужен, то надо вставить следующий код:
Marshal.ReleaseComObject(Cursor);
http://edndoc.esri.com/arcobjects/9.2/N ... b44a5b.htm
Когда курсор больше не нужен, то надо вставить следующий код:
Marshal.ReleaseComObject(Cursor);
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 22 гостя