/// <summary>
        /// Unregister a callback so it will no longer be called when this document is modified
        /// </summary>
        /// <param name="callback">Callback to unregister</param>
        public virtual void UnregisterChangeTracking(ITrackedDocumentNodeCallback callback)
        {
            lock (_callbacks)
            {
                _callbacks.RemoveAll(p =>
                {
                    ITrackedDocumentNodeCallback target;

                    if (p.TryGetTarget(out target))
                    {
                        return(target == callback);
                    }
                    else
                    {
                        return(false);
                    }
                });
            }
        }
        /// <summary>
        /// Register a callback to be triggered when this document is modified
        /// </summary>
        /// <param name="callback">Callback to be triggered</param>
        public virtual void RegisterChangeTracking(ITrackedDocumentNodeCallback callback)
        {
            lock (_callbacks)
            {
                var isAlreadyTracked = _callbacks.Any(p =>
                {
                    ITrackedDocumentNodeCallback target;

                    if (p.TryGetTarget(out target))
                    {
                        return(target == callback);
                    }
                    else
                    {
                        return(false);
                    }
                });

                if (!isAlreadyTracked)
                {
                    _callbacks.Add(new WeakReference <ITrackedDocumentNodeCallback>(callback));
                }
            }
        }
        /// <summary>
        /// Unregister a callback so it will no longer be called when this document is modified
        /// </summary>
        /// <param name="callback">Callback to unregister</param>
        public virtual void UnregisterChangeTracking(ITrackedDocumentNodeCallback callback)
        {
            lock (_callbacks)
            {
                _callbacks.RemoveAll(p =>
                {
                    ITrackedDocumentNodeCallback target;

                    if (p.TryGetTarget(out target))
                    {
                        return target == callback;
                    }
                    else
                    {
                        return false;
                    }
                });
            }
        }
        /// <summary>
        /// Register a callback to be triggered when this document is modified
        /// </summary>
        /// <param name="callback">Callback to be triggered</param>
        public virtual void RegisterChangeTracking(ITrackedDocumentNodeCallback callback)
        {
            lock (_callbacks)
            {
                var isAlreadyTracked = _callbacks.Any(p =>
                {
                    ITrackedDocumentNodeCallback target;

                    if (p.TryGetTarget(out target))
                    {
                        return target == callback;
                    }
                    else
                    {
                        return false;
                    }
                });

                if (!isAlreadyTracked)
                {
                    _callbacks.Add(new WeakReference<ITrackedDocumentNodeCallback>(callback));
                }
            }
        }
Exemple #5
0
 public void UnregisterChangeTracking(ITrackedDocumentNodeCallback callback)
 {
     _documentNode.UnregisterChangeTracking(callback);
 }