/// <summary>
        /// Initializes the service.
        /// </summary>
        private void InitializeService()
        {
            lock (LockObject)
            {
                if (_comarchService == null)
                {
                    _comarchService = new CLMServiceClient();
                    _comarchService.Endpoint.Address = new EndpointAddress(ServiceSettings.Address);
                    _comarchService.Endpoint.Binding.ReceiveTimeout = TimeSpan.FromSeconds(ServiceSettings.Timeout);
                    ((BasicHttpBinding)_comarchService.Endpoint.Binding).Security.Mode = GetBasicHttpSecurityMode();

                    var maxReceivedMessageSize = ServiceSettings.Parameters.GetServiceParameter <int>("MaxReceivedMessageSize");
                    ((BasicHttpBinding)_comarchService.Endpoint.Binding).MaxReceivedMessageSize = maxReceivedMessageSize > 0 ? maxReceivedMessageSize : int.MaxValue;

                    var maxBufferPoolSize = ServiceSettings.Parameters.GetServiceParameter <int>("MaxBufferPoolSize");
                    ((BasicHttpBinding)_comarchService.Endpoint.Binding).MaxBufferPoolSize = maxBufferPoolSize > 0 ? maxBufferPoolSize : int.MaxValue;

                    var maxBufferSize = ServiceSettings.Parameters.GetServiceParameter <int>("MaxBufferSize");
                    ((BasicHttpBinding)_comarchService.Endpoint.Binding).MaxBufferSize = maxBufferSize > 0 ? maxBufferSize : int.MaxValue;
                }
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComarchService"/> class.
        /// </summary>
        public ComarchService() : base("ComarchService")
        {
            if (ServiceSettings != null)
            {
                _clientUsername = ServiceSettings.Parameters.GetServiceParameter <string>("ClientUsername");
                _clientPassword = ServiceSettings.Parameters.GetServiceParameter <string>("ClientPassword");

                if (_comarchService == null)
                {
                    InitializeService();
                }

                if (_comarchService != null && (_comarchService.State == CommunicationState.Faulted || _comarchService.State == CommunicationState.Closed))
                {
                    lock (LockObject)
                    {
                        _comarchService = null;
                    }
                    InitializeService();
                }
            }
        }