/// <summary> /// Fires 'tree updates pending' event on the main thread context /// </summary> /// <param name="textChanges">List of pending changes</param> internal void FireOnUpdatesPending() { Check.InvalidOperation(() => Thread.CurrentThread.ManagedThreadId == _ownerThread, _threadCheckMessage); try { UpdatesPending?.Invoke(this, EventArgs.Empty); } catch (Exception ex) { Debug.Assert(false, Invariant($"Exception thrown in a tree.UpdatesPending event handler: {ex.Message}")); } }
/// <summary> /// Fires 'tree updates pending' event on the main thread context /// </summary> /// <param name="textChanges">List of pending changes</param> internal void FireOnUpdatesPending(IReadOnlyCollection <TextChangeEventArgs> textChanges) { if (_ownerThread != Thread.CurrentThread.ManagedThreadId) { Debug.Fail(_threadContextInvalidMessage); return; } try { UpdatesPending?.Invoke(this, new TreeUpdatePendingEventArgs(textChanges)); } catch (Exception ex) { Debug.Assert(false, Invariant($"Exception thrown in a tree.UpdatesPending event handler: {ex.Message}")); } }