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;
				}
			}
		}