您好我有这样的ActiveX:
class CMyActiveX : public CComObjectRootEx... ... { HRESULT FinalContruct(){return S_OK;} void Start() { // a new thread is created here for some task } void FinalRelease() { // if the thread is alive kill it } }
但是,当浏览器关闭时,不会调用方法FinalRelease。因此线程保持活动状态,并在出口处遇到崩溃。
对此有何想法?谢谢!
答案 0 :(得分:1)
我发现我的控件:: SetClientSite(NULL)在关闭或离开页面时被IE可靠地调用,所以我在那里做关键的关机。 它是IOleObjectImpl中方法的重写。
HRESULT CControl::SetClientSite(IOleClientSite *pClientSite)
{
if (!pClientSite) {
// Means IE is closing or about to, or at least
// that we've lost our place in the sun...
do shutdown stuff
}
IOleObjectImpl::SetClientSite(pClientSite);
if (pClientSite) {
....