public void Stop()
 {
     // ...
     if (_bulkRulesWcfHost != null)
     {
         _bulkRulesWcfHost.Stop();
     }
 }
        public void Stop()
        {
            _log.Info("BL is shutting down");

            // sequence is important

            // workers
            if (_nesperWorker != null)
            {
                _nesperWorker.StopThread();
            }
            _log.Info("Nesper worker thread is stopped");

            if (_alertConsumer != null)
            {
                _alertConsumer.StopThread();
            }
            _log.Info("Alert consumer thread is stopped");

            // WCF proxies
            if (_alertProducerProxy != null)
            {
                _alertProducerProxy.Dispose();
            }
            _log.Info("WCF alert producer proxy is disposed");

            if (_performanceProxy != null)
            {
                _performanceProxy.Dispose();
            }
            _log.Info("WCF performance proxy is disposed");

            // WCF hosting
            if (_ruleWcfHost != null)
            {
                _ruleWcfHost.Stop();
            }
            _log.Info("WCF rule service hosting is stopped");

            if (_bulkRulesWcfHost != null)
            {
                _bulkRulesWcfHost.Stop();
            }
            _log.Info("WCF bulk rules service hosting is stopped");

            _log.Info("Bye-bye.");
            LogManager.Shutdown();
        }