ThinkGeo.com    |     Documentation    |     Premium Support

Collection Modification Problem with 5.0.93.0

Hi,


Sometime between the official 5.0.55.0 and the dev build 5.0.93.0, a change was introduced that leads to the following error:


Exception: InvalidOperationException, Collection was modified; enumeration operation may not execute


Attached is a sample application that demonstrates this problem.  Point the references to 5.0.93.0 and run.


Then, click the refresh button, then, right away, click the Add Data button.


-Rod



Rod, 
  
 I have tested 5.0.55 and 5.0.93, and both of them have the same problem, I think the reason is that the default of Wpf map used multi-threading for drawing multi-tiles, so if we just hold on and after all tiles drawn, at this time you click button, everything would be ok, if during the drawing you click the button, it will throw exception like you encountered. 
  
 You can set the properties of overlay to solve this problem: 
 set TileType to SingleTile or set LockLayerMode to Lock 
  
 Thanks, 
 James

James,


I tried setting LockLayerMode to lock and that did not solve the problem.



            pointsOverlay = new LayerOverlay();
            pointsOverlay.LockLayerMode = LockLayerMode.Lock;  // <------  added this line
 
            //create in memory layer with point data
            fLayer = new InMemoryFeatureLayer();

With this modification, the application still crashes if I click add data, following map refresh.   Is this the correct modification?  Setting Tiletype to Single Tile, did eliminate the crash, but it sounds like Single Tile is not a requirement if I use LockLayerMode - is that right?


Thank you!


Rod



Hi James,


Regarding your comment above about this crashing in 5.0.55.0.  Can you please try 5.0.0.55 instead of 5.0.55.0?  5.0.0.55 looks like the "official" release version for 5.0.  I'm guessing that 5.0.55.0 is some dev build.


I tested with 5.0.0.55 and 5.0.93.0.  I ran 5.0.0.55 ten different times, and I did not get the crash.  I ran 5.0.93.0 ten times, and I got the crash every single time.


BTW, You can add these lines of code to the wpfmap_loaded method to help make sure you are running the correct versions:


            Assembly assembly = Assembly.GetAssembly(typeof (WpfMap));

            FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);

            MessageBox.Show(fvi.ProductVersion);


Sorry for the confusion on the version numbers.


-Greg


 


 



Rod, 
  
 I couldn’t fix it immediately, could you set TileType to SingleTile for temproray, I will keep researching on it, any progress I will let you know. 
  
 Thanks, 
 James

Greg,


I have done the research and eventually found if we use edittool and this issue will be fixed.


Here is the fixed version in his sample.


Thanks,

James



Post9846.zip (2.38 KB)