Out of memory

0 голосов
спросил 14 Ноя, 08 от Peps (5,330 баллов) в категории Программные продукты Esri
Написал программу которая копирует данные из одной базы в другую, выполняя с ними определенные действия. Все работает нормально, но когда я попытался работать с базой где более 5миллионов записей после обработки примерно половины данных она слетела с ошибкой System.Rubtime.InteropServices.COMException (0x8004150D) Outof server memory at ESRI.ArcGIS.Geodatabase.IWorkspaceEdit.StopEditing.
Данные с исходной базы читаются обычным запросом, после обработки 100 записей происходит перезапуск сесии редактирования.
Вот пример кода который делает запись:
                   {
                       IFeature newParcel = mFClass.CreateFeature();
                       newParcel.set_Value(mFClass.FindField("SHAPE"), mFeat.Shape);
                       newParcel.set_Value(mFClass.FindField("ID"), mFeat.get_Value(mFClassSource.FindField("ID")));
                       newParcel.set_Value(mFClass.FindField("KOATUU"), mFeat.get_Value(mFClassSource.FindField("KOATUU")));
                       newParcel.set_Value(mFClass.FindField("CAD_NUMBER"), mFeat.get_Value(mFClassSource.FindField("CAD_NUMBER")));
                       newParcel.set_Value(mFClass.FindField("ARHIVE_DATE"), mFeat.get_Value(mFClassSource.FindField("ARHIVE_DATE")));
                       if (Convert.ToString(mFeat.get_Value(mFClassSource.FindField("ARHIVE_DATE"))).Length<3)
                       {
                           CheckIntersect(newParcel, mFClass, (string)args.GetValue(6), (float)Convert.ToDouble(args.GetValue(7)));
                       }
                       newParcel.Store();
                       Console.Write("\r {0} Status = {1} ID = {2}", indx, mFl, mFeat.get_Value(mFID));
                   }
                   if (mLoop > 100)
                   {
                       mFWorkEditing.StopEditOperation();
                       mFWorkEditing.StopEditing(true);
                       mLoop = 0;
                       mFWorkEditing.StartEditing(true);
                       mFWorkEditing.StartEditOperation();
                     
                   }
                   mFeat = mFCurs.NextFeature();

1 Ответ

0 голосов
ответил 14 Ноя, 08 от Tatkis (2,420 баллов)
А mloop прибавляется где-нибудь?
Попробуйте перед началом нового сеанса редактирования очистить все текущие переменные, присвоением Nothing например
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...