wl198302 发表于 2014-4-23 11:29:44

MFC下叠加placenode,程序异常崩溃,怀疑线程问题

根据OSG中MFC的例子和网上的相关资料,建了一个MFC单文档的程序,程序在调用叠加1000个placenode的时候,经常会出现异常崩溃的情况,怀疑是自己没有控制好线程,请教大神在做叠加操作的时候应该如何控制?以解决这类问题。谢谢!

程序启动后让地球运动,然后触发如下代码,即可出现上述问题。

osg::ref_ptr<MapNode> mapNode = MapNode::findMapNode(mModel);
        if ( !mapNode )
                return usage("a");

        const SpatialReference* geoSRS = mapNode->getMapSRS()->getGeographicSRS();

        CString s;

        vNode.resize(GPS_COUNT);
        for( int i = 0; i < GPS_COUNT; i++)
        {
                Style pin;
                pin.getOrCreate<IconSymbol>()->url()->setLiteral( "../../OSGEarthE/Data/placemark32.png" );
                pin.getOrCreate<TextSymbol>()->font() = std::string("../../OSGEarthE/Data/simsun.ttc");
                pin.getOrCreate<TextSymbol>()->encoding() = TextSymbol::ENCODING_UTF8;
                GeoPoint gp;
                int nLon = rand() % 180;
                int nLat= rand() % 90;
                gp.set(geoSRS, nLon,nLat, 0, ALTMODE_RELATIVE);
               

                s.Format("NO.%d", i);

                osg::ref_ptr<osgEarth::Annotation::PlaceNode> pPlaceNode = new PlaceNode(mapNode, gp, s.GetBuffer(0) , pin);

                s.ReleaseBuffer();
                       
                mGPS->addChild(pPlaceNode.get());
                //vNode.push_back(pPlaceNode);
                vNode = pPlaceNode;
                               
        }

wl198302 发表于 2014-4-24 09:54:36

哪位大侠来帮帮忙啊……

ysw 发表于 2014-4-28 09:30:15

wl198302 发表于 2014-4-24 09:54
哪位大侠来帮帮忙啊……

我也遇到过这样的问题,找到最后也没有找出啥问题。希望多多交流

wl198302 发表于 2014-4-29 10:35:13

ysw 发表于 2014-4-28 09:30
我也遇到过这样的问题,找到最后也没有找出啥问题。希望多多交流

原因基本找到了,本帖结贴!给你看一篇帖子,希望对你有帮助!http://blog.csdn.net/archielau/article/details/8458072

ysw 发表于 2014-4-29 15:53:48

wl198302 发表于 2014-4-29 10:35
原因基本找到了,本帖结贴!给你看一篇帖子,希望对你有帮助!http://blog.csdn.net/archielau/article/d ...

是处理事件的时候出的问题吗

wl198302 发表于 2014-4-30 12:33:21

ysw 发表于 2014-4-29 15:53
是处理事件的时候出的问题吗

对,叠加对象的时候,数量大的情况下就会出问题,数量少的时候也会出,但是不频繁。
页: [1]
查看完整版本: MFC下叠加placenode,程序异常崩溃,怀疑线程问题