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

How to add layer, created by another thread, to Axmapcontrol

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

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

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

首先,arc 对象必须在创建时在同一个线程中使用。该线程由于包含axmapcontrol,一般为主线程。

要修复 "vshost32 has stopped working" 错误,只需在 ui(主)线程中创建图层。这个操作不需要那么多时间。但是创建数据集需要很长时间。因此,在任何线程中创建数据集,在 ui 线程中创建图层。

希望对您有所帮助。