protected override void Dispose(bool disposing) { lock (m_lock) { if (m_disposed) return; m_disposed = true; try { Quit(); } catch (Exception) { // ignore. } finally { if (null != m_hostApplication) Marshal.FinalReleaseComObject(m_hostApplication); m_hostApplication = null; } base.Dispose(disposing); } }
public override void Quit() { base.Quit(); lock (m_lock) { if (null == m_hostApplication) return; try { // This causes power point to crash //application.Quit(); } catch (COMException e) { if (E_FAIL != e.ErrorCode) throw e; } finally { if (null != m_hostApplication) Marshal.FinalReleaseComObject(m_hostApplication); m_hostApplication = null; } } }