The preferred way is to use SHCreateThread (when developing an add-on in C++) as follows:STDMETHODIMP SetSite(IUnknown* pUnkSite) {if (pUnkSite != NULL && IsUpdateRequired()) { SHCreateThread(Update, NULL, CTF_COINIT | CTF_PROCESS_REF, NULL); } else { // Release cached pointers and other resources here. } // Return the base class implementation return IObjectWithSiteImpl<CHelloWorldBHO>::SetSite(p