protected override void DoStart() { try { m_CPULoadFactor = 1d; m_SubInstrCallerCount = 0; m_SubInstr.Start(); m_SubLog.Start(); m_Locker.Start(); m_WaitEvent = new AutoResetEvent(false); m_Thread = new Thread(threadSpin); m_Thread.Name = THREAD_NAME; m_Thread.Start(); } catch { if (m_Locker.Running) { try { m_Locker.WaitForCompleteStop(); } catch { } } if (m_SubLog.Running) { try { m_SubLog.WaitForCompleteStop(); } catch { } } if (m_SubInstr.Running) { try { m_SubInstr.WaitForCompleteStop(); } catch { } } AbortStart(); throw; } }
protected override void DoWaitForCompleteStop() { m_Daemon.WaitForCompleteStop(); base.DoWaitForCompleteStop(); }