A custom extension, that has existed many years, stable,.. all of a sudden started get weird errors. Basically this extension takes a point snaps it to a corresponding LRS and retrieves an Offset, Measure, Side, and a segment ID from the Centerline. The last time this extension was re-compiled was around ArcGIS 10.0. I am currently running ArcGIS 10.2.2, the extension was performing fine .... the last successful run was month ago (Not something we run all the time). No changes have been made to ArcGIS system. The Window 7 system has only undergone bi weekly updates send out by microsoft. When I run the extension, I get two pop ups:
- "Item not found in this Collection"
- after clearing the above pop-up... "Objects in this Class cannot be updated outside an edit session"
The temporary work around is now run the extension after manually setting up an edit session .... No edit session was ever required previously, last 7-8 years of use!
The exception is triggered on the pFeat.Store() execution. "results" is a simple Collection . The result collections contains all the correct information...pFeat is defined as an IFeature.
I suspect it has something to do with the Window system....Has anyone else experienced this? Any fixes?
'Return a cursor for all the features pCur = pFlayer.Search(Nothing, False) pFeat = pCur.NextFeature Do Until pFeat Is Nothing System.Windows.Forms.Application.DoEvents() Route = pFeat.Value(pFeat.Fields.FindField(fPointRouteName)) 'Get point to pass mypoint = pFeat.Shape Dim results As New Collection GC.Collect() System.Windows.Forms.Application.DoEvents() My.ArcMap.Application.StatusBar.StepProgressBar() results = getms(Route, mypoint) Try 'Update fields If results.Item("SegID") = -9999 Then results.Remove("ErrDesc") results.Add("No Centerline SegID Found", "ErrDesc") End If pFeat.Value(pFeat.Fields.FindField("MP")) = results.Item("MS") pFeat.Value(pFeat.Fields.FindField("Offset")) = results.Item("OFFSET") pFeat.Value(pFeat.Fields.FindField("rSide")) = results.Item("rSide") pFeat.Value(pFeat.Fields.FindField("ErrDesc")) = results.Item("ErrDesc") pFeat.Value(pFeat.Fields.FindField("SegID")) = results.Item("SegID") pFeat.Store() Catch exp As Exception MsgBox(exp.Message) End Try pFeat = pCur.NextFeature Loop