Catel.Data.ModelBase.SuspendChangeNotifications C# (CSharp) Метод

SuspendChangeNotifications() публичный Метод

Suspends the change notifications until the disposed object has been released.
public SuspendChangeNotifications ( bool raiseOnResume = true ) : IDisposable
raiseOnResume bool if set to true, the notifications are invoked on resume.
Результат IDisposable
        public IDisposable SuspendChangeNotifications(bool raiseOnResume = true)
        {
            var token = new DisposableToken<ModelBase>(this, x =>
            {
                lock (_propertyValuesLock)
                {
                    if (_changeNotificationsSuspensionContext == null)
                    {
                        _changeNotificationsSuspensionContext = new SuspensionContext();
                    }

                    _changeNotificationsSuspensionContext.Increment();
                }
            },
            x =>
            {
                SuspensionContext suspensionContext;

                lock (_propertyValuesLock)
                {
                    suspensionContext = _changeNotificationsSuspensionContext;
                    if (suspensionContext != null)
                    {
                        suspensionContext.Decrement();

                        if (suspensionContext.Counter == 0)
                        {
                            _changeNotificationsSuspensionContext = null;
                        }
                    }
                }

                if (raiseOnResume)
                {
                    if (suspensionContext != null && suspensionContext.Counter == 0)
                    {
                        var properties = suspensionContext.Properties;

                        foreach (var property in properties)
                        {
                            RaisePropertyChanged(property);
                        }
                    }
                }
            });

            return token;
        }
        #endregion