/// <summary>
        /// Initialize WCF service to publish events
        /// </summary>
        private void InitializeWCFServiceEventPublisher()
        {
            if (this.ConMonServiceEventsWCFServiceClient != null || this.ConMonServiceEventsWCFServiceCallbackContext != null)
            {
                this.CleanupWCFServiceEventPublisher();
            }

            this.ConMonServiceEventsWCFServiceCallbackContext = new InstanceContext(new ConMonServiceEventsWCFServiceCallback());
            this.ConMonServiceEventsWCFServiceClient          = new ConMonServiceEventsClient(this.ConMonServiceEventsWCFServiceCallbackContext);
        }
        /// <summary>
        /// Makes sure the client instance is instanced
        /// </summary>
        private void EnsureWCFClient()
        {
            // If not in open state, open it
            if (this.ConMonServiceEventsWCFServiceClient != null && this.ConMonServiceEventsWCFServiceClient.State != CommunicationState.Opened)
            {
                this.Dispose();
                this.ConMonServiceEventsWCFServiceClient = null;
                this.InitializeWCFServiceEventPublisher();
            }

            // If closed or not instantiated, then
            if (this.ConMonServiceEventsWCFServiceClient == null || this.ConMonServiceEventsWCFServiceClient != null && (this.ConMonServiceEventsWCFServiceClient.State == CommunicationState.Closed))
            {
                this.ConMonServiceEventsWCFServiceClient = null;
                this.InitializeWCFServiceEventPublisher();
            }
        }
        /// <summary>
        /// Cleanup WCF service instances
        /// </summary>
        private void CleanupWCFServiceEventPublisher()
        {
            try
            {
                if (this.ConMonServiceEventsWCFServiceCallbackContext != null)
                {
                    this.ConMonServiceEventsWCFServiceCallbackContext.Close();
                    this.ConMonServiceEventsWCFServiceCallbackContext = null;
                }

                if (this.ConMonServiceEventsWCFServiceClient != null)
                {
                    this.ConMonServiceEventsWCFServiceClient.Close();
                    this.ConMonServiceEventsWCFServiceClient = null;
                }
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
            }
        }