ThinkGeo.com    |     Documentation    |     Premium Support

Unhandled crash on WpfMap1.CurrentExtent set

   I have a mixed windows forms + wpf application where a mdi winform on the main assembly opens a wpf window (where WpfMap is located).


   I used to catch all application level unhandled exceptions with this couple of handlers:







 <style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica}
span.s1 {color: #1e39f6}
</style>


      AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionFilter


      AddHandler System.Windows.Forms.Application.ThreadException, AddressOf ApplicationThreadExceptionFilter


 


  And they was catching everything unhandled, until now.


  Today, the application is closing abruptly without firing this events and without showing any kind of error message or exception on a installation. I have been tracing the point where whatever the problem is causing this happens up to the following instruction:


  WpfMap1.CurrentExtent = New RectangleShape(-120, 89, 132, -68)


 Obviously a Try Catch block does not help either. It just executes this instruction as a "End"


 The strange part is that there is other WpfMap property sets before that does not fail such as:







 <style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica; color: #008f27}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica; color: #1e39f6; min-height: 12.0px}
span.s1 {color: #000000}
span.s2 {color: #1e39f6}
</style>

    WpfMap1.MapUnit = GeographyUnit.DecimalDegree


    WpfMap1.MapTools.PanZoomBar.IsEnabled = False


    WpfMap1.MapTools.Logo.IsEnabled = False


    WpfMap1.MaximumScale = 73000000



 I know this is a bit of "offtopic", but.. do you know how can I debug this? What can be causing to end the app within the CurrentExtent set instruction?







 <style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica}
span.s1 {color: #1e39f6}
</style>



Carlos, sounds like you are running into a dispatcher unhandled exception.  If this is a WPF application, you can subscribe to System.Windows.Application.DispatcherUnhandledException to temporarily catch this exception.

Hi Carlos, 
  
 We haven’t run into any winform+wpf issues. Do you have any simple sample that reproduces this issue? 
  
 Regards, 
 Tsui

Hi Klaus, 
  
  The DispatcherUnhandledException event handler did’n’t catch anything either. that’s the strange thing. 
  
  At the end I was able to debug it with an old school method (Debug.WriteLine(“I was here”)). It was a stack overflow setting the current extent because of the CurrentExtenChanged event handler logic to restrict the extent to +/-90 lat. It only was happening in a PC that had very high resolution, as in normal ones the MaximumScale=72000000 was efectively disabling extents with more than 180º height, but in this hi res screen the logic to restrict the extent size  was trying to set a 90N/90S, but the core was setting a 110-N/110-S extent calling recursively to the correction routine. (the map snaps to standard ZoomLevels since I enabled the DateLineWrap mode, that’s why the core is changing the current extent from the specified to a ZoomLevel Snapped one) 
  
  The issue is fixed now just by using RestrictExtent, but I’m still wondering why no exception handling event was fired. 
  
 Carlos

Wow, you are a real software mechanic.  Glad to see you have it solved and thanks for the detailed explanation.  Sure some of us will run into this down the road.

I am glad your problem is fixed.