字很多,不过对高手来说不太难,请耐心看看,先谢谢了!mfc对话框程序,语音接收播放端,只有一个主对话框,如果收到一个采集发送端的播放请求,就创建一个播放窗口(是一个非模态对话框),每个播放窗口初始化时会开一个组播接收线程,现在有个问题,如果主窗口收到了某个采集端发送的停止播放消息,通过调用播放窗口指针的DestroyWindow()函数就可以结束掉窗口对应的接收播放线程,但如果是主对话框关闭时做同样的操作,则有时候对应的播放窗口的线程不会退出,从而导致有一些内存泄露,看着很不爽。后来我在主对话框中的OnDestroy()中加了个Sleep(100),就可以关闭播放窗口的线程了,问题就出来了,怎么在关闭主对话框时能等各个播放窗口的线程完全退出再关闭?
解决方案 »
- 高人帮我看看这段SDK代码有什么问题?在Win7可以正常显示,XP却看不见LISTVIEW控件
- 一个编辑框TextBox,全选原有文本后输入新字符,出现乱码,一般来说是什么原因导致?
- VC6添加ActiveX控件后,程序启动不了
- 提供反截屏技术源代码
- 使用CreateWindowEx创建窗体时如何使用lParam参数?
- 求助: 关于dll调用的问题。分不够了,请大家友情帮助,谢谢!
- 有关使用ADO记录集,移动记录失败的问题
- 这样自定义消息行吗?
- 我在Debug下不能添加BreakPoint,为什么啊?
- 请介绍一下如何用ATL做一个COM
- 如何使用stretchble使绘图时实现放大缩小
- 关于服务程序(问题真多啊)
等待线程句柄是否受信,确定播放线程是否退出
while(1)
{
if (!m_Audio.Receive(......)) // m_Audio是一个封装socket的组播类对象
{
break;
]
{
// 播放或其他工作.....
}
}
reture 0;如果窗口关闭receive方法好像能测到,所以“死”的时间应该不会很长
WaitForSingleObject(m_pThread->m_hThread,INFINITE);可以正常退出线程了。但这样做是不是有点不好?万一线程很长时间没退出,主线程岂不是关不掉了?