/// <summary> /// Notifies that the specified setting has changed (for internal use only). /// </summary> /// <param name="setting">The setting that has changed.</param> internal override void ProcessSettingChanged(IUntypedSettingProxy setting) { lock (mChangedSettings) { mChangedSettings.Add(setting); } }
/// <summary> /// Notifies that the specified setting has changed (for internal use only). /// </summary> /// <param name="setting">The setting that has changed.</param> internal override void ProcessSettingChanged(IUntypedSettingProxy setting) { // enqueue changed setting lock (mChangedSettings) { mChangedSettings.Add(setting); } // schedule calling OnSettingsChanged() if (!mSettingChangedScheduled) { mSettingChangedScheduled = true; ThreadPool.QueueUserWorkItem( obj => { mSettingChangedScheduled = false; IUntypedProcessingPipelineStageSetting[] settings = null; lock (mChangedSettings) { if (mChangedSettings.Count > 0) { settings = mChangedSettings.Cast <IUntypedProcessingPipelineStageSetting>().ToArray(); mChangedSettings.Clear(); } } if (settings != null) { OnSettingsChanged(settings); } }); } }
/// <summary> /// When overridden in a derived class, notifies that the specified setting has changed (for internal use only). /// </summary> /// <param name="setting">The setting that has changed.</param> internal abstract void ProcessSettingChanged(IUntypedSettingProxy setting);