Tag: esri

来自System.Windows.Forms的AccessViolationException,在WPF中使用WinFormsHost

在开发WPF / WinForms互操作应用程序时,我遇到了一个令人讨厌的问题。 我一直试图解决这个问题三天,但我无法取得任何进展。 我怀疑我能提供足够的信息来获得解决方案,但我正在寻找能够解释这里究竟发生了什么的人吗? 我使用的组件是AxMapControl(ESRI ArcGIS Engine 9.3.1 SP2),据我所知,它是COM包装的本机代码,公开为WinForms控件。 该组件使用WPF WinFormsHost代理嵌入在我们的WPF(.NET 3.5)客户端软件中。 应用程序会定期使用AccessViolationException崩溃。 这总是发生在用户鼠标点击地图控件时,但似乎没有任何押韵或原因在什么具体输入。 堆栈跟踪始终相同: System.AccessViolationException:尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。 在System.Windows.Forns.Forms.Forf.DefWndProc上的System.Windows.Forms.NativeWindow.DefWndProc(Message&m)处的System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc,IntPtr hWnd,Int32 msg,IntPtr wParam,IntPtr lParam) (Message&m)System.Windows.Fornd.OndMessage(Message&m)位于System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)的System.Windows.Forms.AxHost.WndProc(Message&m)处的System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)在System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam) 因为exception似乎抛出了我的代码启动的任何调用堆栈之外,我无法弄清楚如何捕获exception并以编程方式处理它。 此问题发生在调试模式以及发布版本中。 但它确实不会出现在所有计算机上,但我能够在Windows 7和XP以及.NET framework 3.5和4.0上复制此问题。 在崩溃时检查进程是什么,exception似乎是在GAC部署的DLL上似乎有多个CreateFileMapping操作失败,结果FILE LOCKED WITH ONLY READERS 。 此视图已被过滤以仅显示该类型的结果,但似乎每个DLL恰好发生两次。 这是什么意思吗? 现在,很明显我对发生的事情毫无头绪,以及如何解决这个问题。 如果你有一个线索,你能否善待并向我解释我正在处理的问题类型? 知道如何调试这个问题吗?

坐标时区

由于标题推断我需要根据一对坐标找到时区(或者可能只是UTC偏移)。 我一直在寻找不同的解决方案,并且有一些Web服务,但我需要能够脱机访问应用程序。 由于时区并非完全基于经度,因此看起来并不容易…… 我虽然要查询一个ESRI shapefile,但我已经包含了世界上所有的国家和它们的时区,但它看起来有点复杂。 如果这应该是解决方案,您知道任何提供此function的.NET库吗?