3

我在使用 C# 将 MS MapPoint 2009 集成到我的 WinForms .Net 2.0 应用程序时遇到了一些问题。我已将 ActiveX MapPoint 控件添加到表单中,让它显示地图和位置没有问题;我担心的是创建地图后加载地图所需的时间。

我的开发机器上的测试显示平均加载时间在 3 到 5 秒之间,在此期间应用程序完全锁定。虽然这不是完全不可接受的,但失去对应用程序的控制的时间非常长。此外,由于 GUI 线程被锁定,我无法显示加载对话框或其他内容来掩盖加载时间。

挂起的行是这样的:(其中 axMappointControl1 是 MapPoint 控件)

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);

我尝试在另一个线程上执行 NewMap 方法,但 GUI 线程仍然被阻塞。

我的问题是:

  • MapPoint 加载时我能做些什么来加快它的速度?
  • 有什么方法可以加载 MapPoint 使其不会阻塞 GUI 线程?

任何帮助是极大的赞赏。

4

2 回答 2

5

根据 mapforums.com 上的这些 线程,ActiveX 启动的缓慢是众所周知且不可避免的(尽管有助于提高 GUI 响应性的线程问题仍然悬而未决。

建议的一件事是放弃 ActiveX 版本,转而使用 MapPoint.Application 对象。

希望有帮助。

于 2008-09-18T20:02:26.167 回答
1

是的,应用程序版本在它自己的线程上运行——所以这应该是一个更快的选择——在它启动时更容易做你自己的事情。但是,MapPoint 2010 在用户启动时往往需要几秒钟才能启动。

我将创建一个临时 GUI 线程并使用它在启动期间显示启动屏幕和/或执行您需要执行的任何线程安全初始化。

对 MapPoint 实例(或 ActiveX 控件)的所有调用必须来自创建 MapPoint 控件或应用程序对象的同一线程。

于 2011-01-04T14:54:12.880 回答