如何将由另一个线程创建的图层添加到Axmapcontrol

时间:2018-01-03 07:02:42

标签: multithreading arcgis layer

我有一个包含栅格数据集的地理数据库。我可以读取这些数据集并将它们转换为图层。我想添加这些图层,创建另一个线程,到axmapcontrol,但我收到错误" vshost32已停止工作"。

我尝试了Invoke方法,Action方法和Backgroundworker,但没有一个工作。实际上我已经找到了一种方法来做到这一点,但它没有用。我可以将图层存储为文件,然后使用AddLayersFromFile方法再次读取。它比单线程架构慢,但仍然是多线程的。但是,如果我要使用图层文件,为什么我要使用地理数据库。

最后,如何在多线程结构中向axmapcontrol添加图层。希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

首先,必须在创建的同一个线程中使用arc对象。由于包含axmapcontrol,这个线程通常是主线程。

要修复“vshost32已停止工作”错误,只需在ui(主)线程中创建图层。这个操作不需要花费太多时间。但是创建数据集需要很长时间。因此,在任何线程中创建数据集,在ui线程中创建图层。

希望它会对你有所帮助。