/// <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);
     }
 }
示例#2
0
        /// <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);
                    }
                });
            }
        }
示例#3
0
 /// <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);