1、bug重现步骤:使用MedicalViewer(Net C#版本)显示多张CT图像(DicomDir方式加载)的时候,如果我调用了MedicalViewerMultiCell的LoadRegion(rgnFilePath)从本地的Rgn文件里加载区域,然后再关闭窗口或者滑动滚轮的时候都会出现异常(引发的异常:“System.Runtime.InteropServices.SEHException”(Leadtools.MedicalViewer.dll 中))。如下图:
2、Bug分析:这个异常是说这里出现了一个非托管代码的异常,并且这个异常还没有被Net映射过来,所以这种异常我们都无法捕获处理他,只能看着程序直接崩溃。在关闭窗口的时候出现这个异常是因为调用了LoadRegion(rgnFilePath)之后,medicalViewer里相对应的cell的资源无法释放(这一点我们尚且可以通过在关闭的时候先强行移除这个cell来避免异常,而滑动滚轮切换图像时引发的异常我们则完全没有办法处理)
需要说明的是:上面的异常都是针对LoadRegion(rgnFilePath)只有一个参数的时候出现的,LoadRegion还有一个带两个参数的LoadRegion(rgnFilePath,subCellIndex)重载,使用后面的重载不会突然崩溃,但是多次滚动的时候偶尔在会在下面这个地方出现异常
cell.SetRequestedImage(image, e.RequestedFramesIndexes, MedicalViewerSetImageOptions.Insert);
如下图:
3、Bug处理建议:MedicalViewerMultiCell.LoadRegion()这个接口的内部实现肯定有诸多问题,可能是引用了其他地方的资源没有释放,可能是指针访问了空内存,希望能尽快排查处理这情况,很着急。。。
4、环境:Leadtools.MedicalViewer的版本为19.0.0.0 NetFramework4.5.2 语言:C#
|