void CDwnDoc::Disconnect() { CDocument* pDoc = _pDoc; if(pDoc) { Assert(IsDocThread()); super::Disconnect(); g_csDwnDoc.Enter(); _pDoc = NULL; _fCallbacks = FALSE; g_csDwnDoc.Leave(); if(_aryDwnDocInfo.Size()) { OnDocThreadCallback(); _aryDwnDocInfo.DeleteAll(); } pDoc->SubRelease(); } }