在卸载activex控件时,IE会调度什么事件?

时间:2010-05-27 03:42:03

标签: activex

您好我有这样的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。因此线程保持活动状态,并在出口处遇到崩溃。

对此有何想法?谢谢!

1 个答案:

答案 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) {
        ....

MSDN - IOleObject::SetClientSite method