查看: 1307|回复: 5

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

[复制链接]

该用户从未签到

发表于 2014-4-23 11:29:44 | 显示全部楼层 |阅读模式
根据OSG中MFC的例子和网上的相关资料,建了一个MFC单文档的程序,程序在调用叠加1000个placenode的时候,经常会出现异常崩溃的情况,怀疑是自己没有控制好线程,请教大神在做叠加操作的时候应该如何控制?以解决这类问题。谢谢!

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

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

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

  5.         CString s;

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

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

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

  20.                 s.ReleaseBuffer();
  21.                        
  22.                 mGPS->addChild(pPlaceNode.get());
  23.                 //vNode.push_back(pPlaceNode);
  24.                 vNode[i] = pPlaceNode;
  25.                                
  26.         }
复制代码

debug下错误信息

debug下错误信息

堆栈信息

堆栈信息

该用户从未签到

 楼主| 发表于 2014-4-24 09:54:36 | 显示全部楼层
哪位大侠来帮帮忙啊……

该用户从未签到

发表于 2014-4-28 09:30:15 | 显示全部楼层
wl198302 发表于 2014-4-24 09:54
哪位大侠来帮帮忙啊……

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

该用户从未签到

 楼主| 发表于 2014-4-29 10:35:13 | 显示全部楼层
ysw 发表于 2014-4-28 09:30
我也遇到过这样的问题,找到最后也没有找出啥问题。希望多多交流

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

该用户从未签到

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

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

该用户从未签到

 楼主| 发表于 2014-4-30 12:33:21 | 显示全部楼层
ysw 发表于 2014-4-29 15:53
是处理事件的时候出的问题吗

对,叠加对象的时候,数量大的情况下就会出问题,数量少的时候也会出,但是不频繁。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表