通视分析“SEHException (0x80004005)“

0 投票

使用产品:iObjects.NET 9D 操作系统:Windows 10 x64

数据类型:文件型

问题描述:三维场景中以三维切片缓存形式加载了倾斜模型数据,使用视线分析同一组数据(一个观察点对应多个目标点),获取视线分析结果时出现以下情况:1)主线程下,运行相关的代码能够正常获得可视与不可视信息,与场景中的视线效果一致;2)单独创建一线程,作视线分析时,结果为全部点位均可视,与场景中的视线效果不相符。若在获取分析结果的代码处添加断点,则有较大的概率报错“外部组件异常”。3)在iDesktop中使用同样的数据测试,并未出现问题;使用10i版本的组件时也存在同样问题。

int tCount = currentSightline.GetTargetPointCount();
int visible = 0;
for (int i = 0; i < tCount; i++)
{
  if (currentSightline.GetSightlineResult(i).Visible)
  {
     visible++;
     visiblePoints.Add(currentSightline.GetTargetPoint(i));
  }
}

问题:1)报错的原因?2)是否能在主线程外执行通视分析等三维分析功能?

1月 9 分类:  38次浏览 | 用户: RookieZ 才疏学浅 (13 分)

1个回答

0 投票
你好,三维分析和数据操作不支持在子线程里面进行操作,需要在主线程里面进行分析
1月 11 用户: 程逸诗 名扬四海 (3,825 分)
您好!在子线程中,当程序执行到视线分析的部分时,我通过SceneControl.invoke的方式把三维分析的部分转到主线程中运行,一开始能获取到正确的结果,但运行一段时间后,程序就报出以上的报错,指向Sightline.GetSightlineResult()这一处,请问这样在线程间切换的方式是否是报错的原因?
报错是什么报错呢,还是上面的报错一样吗? 这样的话就是由于这个问题导致的
...