ThinkGeo.com    |     Documentation    |     Premium Support

Asynchronous methods?

I'm looking for some advice on running certain methods on the WPF control asynchronously.


Our project updates the map frequently calling:


Refresh(Overlay)


The problem with doing this so often is that it locks up the rest of the application. We've tried as much as possible to run queries etc in a background worker, its just the map redrawing itself that takes the time.


My question is, is there any way we can call the Refresh method asynchronously in order to properly maintain a responsive UI for the user?



David, I am sure you know that this is a WPF limitation and not necessary a MapSuite limitation.  I doubt ThinkGeo can do anything about this.   
  
 If calling Refresh(Overlay) using Dispatcher.BeginInvoke with DispatcherPriority set to Background or a level lower than Input does not work for you, then you may have to look into running the map on its own OI thread.  I did contemplate this as our application also encounters heavy traffic, has to update data grids and refresh the map as well as respond to use input.  In my case I used a combination of BeginInvokes, BackgroundWorkers and selective refreshing to avoid running map on its own OI thread.   So far, so good but I am keeping an eye on things.  In the mean time, we are re-architecting just in case map has to be run on its own OI thread. 


Thanks for your answer Klaus, you've confirmed what I suspected.


We've already set about using a combination of BackgroundWorkers and Dispatcher.BeginInvoke to get things "appearing" faster.


I'm also in the process of making a large number of features (at a particular extent) appear as a region at a certain ZoomLevel. If anyone has any insight on this, please let me know.



Hi David, 
  
 Take a look into wiki.thinkgeo.com/wiki/File:ServicesEditionSample_ClusterPointStyle_CS_090918.zip, it might give you some ideas on how to aproach it. 


David, also ensure you have the overlay hosting your feature layers set to MultipleTile.  This way layer image is created asychronously.



Klaus & Carlos, 
  
 Thanks for your posts, as so far, you are the expert of MapSuite products and will become to the MVPs. Dave, hope their posts can help you properly, if you still encounter any more questions please let us know, 
  
 Thanks, 
  
 Scott,