|
本帖最后由 lyc0 于 2010-1-23 00:11 编辑
开发环境:
OSG库版本OpenSceneGraph-2.8.2 Debug
VS 2008 SP1
问题:参照OSGMFC的例子,自己写了一个单文档mfc的OSG例子,发现一个问题,在关闭程序时候,有时会出现线程无法关闭的情况 (osg初始化在OnPaint中,因为CWnd没有OnInitialUpdate函数)
情况一:
1. 改动只是将OnDestroy()中的等待时间改为INFINITE。。。
WaitForSingleObject(m_ThreadHandle, /*1000*/INFINITE);
此时,运行,然后关闭,这样重复几次,会有一两次出现无法关闭线程的情况(此时窗口已经关闭),经过尝试用ALT+F4出现的几率会比正常关闭要高。。。此时,必须使用VS的停止调试来关闭,即调试没自动关闭。。。
情况二:
2. 无论是INFINITE还是1000,若可以正常关闭,但是还是会出现内存泄漏提示( 这个问题和大家问到那个MFC泄漏不同,工程已经添加MFC90d.lib和MFCm90d.lib,并且已经解决),在公司测试此问题时,设为等待线程1000,此问题更加严重,窗口关闭后,居然还有程序的进程残留(通过任务管理器看)。。。
Detected memory leaks!
Dumping objects ->
{53535} normal block at 0x0262FB80, 1 bytes long.
Data: < > CD
Object dump complete.
工程文件已经上传,麻烦大家帮忙测试一下。。。谢谢
test.rar
(112.44 KB, 下载次数: 129)
|
|