类CFriendSession从CCmdTarget继承,
CFriendSession的构造器中调用:
BOOL bRet = AfxConnectionAdvise(m_ISession, IID_ISessionEvents, m_session_sink, FALSE,&m_session_cookie); 在CFriendSession的析构器中调用:
BOOL bRet = AfxConnectionUnadvise(m_ISession, IID_ISessionEvents, m_session_sink, FALSE,m_session_cookie);
断开连接。当类CFriendSession直接被进程生成释放时,进程可正常退出。当类CFriendSession放在某个Dll中,被进程生成释放时,进程不能退出。
CFriendSession的构造器中调用:
BOOL bRet = AfxConnectionAdvise(m_ISession, IID_ISessionEvents, m_session_sink, FALSE,&m_session_cookie); 在CFriendSession的析构器中调用:
BOOL bRet = AfxConnectionUnadvise(m_ISession, IID_ISessionEvents, m_session_sink, FALSE,m_session_cookie);
断开连接。当类CFriendSession直接被进程生成释放时,进程可正常退出。当类CFriendSession放在某个Dll中,被进程生成释放时,进程不能退出。
解决方案 »
- 进程隐藏!!!!!!!!!!!
- 重写MFC基类调用WPF界面
- ShowWindow 卡死程序
- 请问,richEdit如何知道每行的字体的高度,以及整个显示区域的高度呢?
- Socket编程服务器端是不是大多在Unix、Linux下吗?
- 欢迎好事者来讨论:GetDC()问题!
- 我从捕获的ip包中能分析出是否数据库操作, 是什么数据库操作吗?
- 谁能写“www.kuro.com.cn”关于P2P软件代码???
- 一个不会调试的程序员?
- 如何用delphi编程得到数据库中一张表的详细结构....
- IsUniqueInList(CListCtrl theListCtrl,......)这样的定义有错呢?
- 语音卡的问题,有兴趣的都来看看!!!!!!
当类CFriendSession放在某个Dll中,被进程生成释放时,进程不能退出。
--------------------------------------------------------------------------
这句不明白,进程不能退出?
释放全局变量,即不是所有的线程退出了。
现在发现
是类CFriendSession的构造器中执行了以下语句导致的:
try
{
HRESULT hr = m_ISession.CreateDispatch(CLSID_JabberSession, e);
ASSERT(SUCCEEDED(hr));
}
catch( COleDispatchException * e )
{
e->Delete();
}是不是与m_ISession的释放不干净有关?
谢谢先!
在析构函数中释放m_Isession没有?
m_ISession.ReleaseDispatch();
不知道这个调用能否完全的释放m_ISession?