ThinkGeo.com    |     Documentation    |     Premium Support

KeyNotFoundException

Hello,


We have an application running for 2 years and suddenly it started to crash with a KeyNotFoundException, even when we are not doing nothing. But there are some data from geo positioning vehicles.


 


The stack trace:



Application: XVIAE.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.Collections.Generic.KeyNotFoundException Stack: at ThinkGeo.MapSuite.WpfDesktopEdition.Tile.DrawException(ThinkGeo.MapSuite.Core.GeoCanvas, System.Exception) at ThinkGeo.MapSuite.WpfDesktopEdition.Tile.Draw(ThinkGeo.MapSuite.Core.GeoCanvas) at ThinkGeo.MapSuite.WpfDesktopEdition.Tile.sxM=(System.Object) at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(System.Object) at System.Threading.ExecutionContext.runTryCode(System.Object) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 


 


The version is 5.0.81.


Does anyone have a clue what might be the problem?


 


Best regards


AF



Hello Miguel, 
  
 Thanks for your post, so looks like you didn’t change or upgrade the MapSuite dll version, but suddenly throw this error. 
  
 Can you provide more information? What’s the operate before the exception throw? Is that possible you can provide a sample that can recreate the problem? 
  
 Regards, 
  
 Gary

Hello, 
  
 My dll version is 5.0.81.0 
 We have 15 layers with asynchronous updates that can be performed on map changes in the various layers together. 
 The operation consists in redesigning a set of objects on the map, every minute, and each layer has 10 objects on average. 
  
  
 Regards, 
 Tiago Neves

Hello Miguel, 
  
 Most time this exception is happened when you try to add/edit/delete features, sometimes user are using internalFeature to directly operate the feature but and forget to call the r-tree to rebuilt, this will make the feature disappeared but the the index still exist in the r-tree, is that possible this is the problem in your scenario? 
  
 Sorry I have to ask a small self-contained sample to recreate your problem. 
  
 Regards, 
  
 Gary

Hello Gary, 
  
 Whenever we perform these operations run the r-tree. 
 However our code has thousands of lines of code, thus sending complex examples. 
 We also intend to upgrade to version 6, and would like to know if you could protect your code on your side (in your dll), so that the application does not blind? 
  
 Regards, 
 Tiago Neves

Hello, 
  
 I wonder if they already have an answer regarding this item, if you are invertigar and we arrived at any conclusion. 
  
 Regards,  
 Tiago Neves

This happens to me a lot. The tech support said it was a threading issue where the map is being drawn while we are manipulating feature(s). Our solution was two fold:


1) Every LayerOverlay that we create has its LockLayerMode property set to Lock

2) Before adding/deleting/changing one or more features (we chunk as much as possible btw) we lock the layer

     Since we use C# we do a lock(myInMemoryFeaturelayer) { /* update the feature(s) */ }

     This fixed about 98% of the occurances of this exception. They still happen but much more rare now.



Hello Miguel, 
  
 Sorry for delay, it seems like encountered a missing for a resource,  but I’m not sure what’s root cause without recreate it. So, below is some suggestion we can try: 
  
 a. The program has been Run 2 years, it might encounter a new data from the new data source. Please check your recently data. 
 b. Please set “DrawingExceptionMode” to “ThrowException” for every layer which was in specified overlay. Then, you can get a concrete exception, and paste here to see if we can get further information. 
  
 Sorry for the inconvenience. 
  
 Regards, 
  
 Gary 


Hello Gary, 
  
 The two points that have already been tested referiste and the problem continues to occur. 
 We are thinking about moving to version 6. I wonder if this version of the problem no longer occurs? 
  
 Regards, 
 Tiago Neves

Hi Miguel, 
  
 I think you could have a try, the new version has many new features and fixed some bugs, maybe this bug is in one of them, please let us know your result. 
  
 Regards, 
 Edgar