private void OnRemoteConfigurationRemoved(object sender, ConfigurationEventArgs e)
        {
            Configuration  configuration;
            IConfiguration remoteConfiguration = e.Configuration;
            Guid           configurationUid;

            try
            {
                configurationUid = remoteConfiguration.Uid;
            }
            catch (Exception exception)
            {
                LoggingProvider.Current.Log(TraceEventType.Error, exception);
                return;
            }
            lock (_collection)
            {
                VerifyDisposed();
                if (_collection.TryGetValue(configurationUid, out configuration))
                {
                    _collection.Remove(configurationUid);
                }
            }
            if (configuration == null)
            {
                configuration = new Configuration(remoteConfiguration, _application);
            }
            ConfigurationEventArgs.RaiseEvent((EventHandler <ConfigurationEventArgs>)_configurationRemoved, this, configuration);
            configuration.Dispose();
        }
        private void OnHostConfigurationCreated(object sender, ConfigurationEventArgs e)
        {
            IConfiguration hostConfiguration = e.Configuration;

            lock (Lock)
            {
                VerifyDisposed();
                if (!ContainsKey(hostConfiguration.Uid))
                {
                    Add(hostConfiguration.Uid, hostConfiguration);
                }
            }
            ConfigurationEventArgs.RaiseEvent((EventHandler <ConfigurationEventArgs>)_configurationCreated, this, hostConfiguration);
        }
        private void OnHostConfigurationRemoved(object sender, ConfigurationEventArgs e)
        {
            IConfiguration hostConfiguration = e.Configuration;
            bool           configurationRemoved;

            lock (Lock)
            {
                VerifyDisposed();
                configurationRemoved = Remove(hostConfiguration.Uid);
            }
            if (configurationRemoved)
            {
                ConfigurationEventArgs.RaiseEvent((EventHandler <ConfigurationEventArgs>)_configurationRemoved, this, hostConfiguration);
            }
        }