Exemplo n.º 1
0
        /// <summary>
        /// Updates the visible <see cref="LogMessage"/>s.
        /// </summary>
        /// <param name="messages">The list of <see cref="LogMessage"/>s to display.</param>
        /// <param name="delta">The count of new <see cref="LogMessage"/>s.</param>
        public void LogMessagesChanged(List <LogMessage> messages, int delta)
        {
            if (InvokeRequired)
            {
                LogMessagesChangedDelegate updateDelegate = LogMessagesChanged;
                Invoke(updateDelegate, messages, delta);

                return;
            }

            try
            {
                dtgLogMessages.SelectionChanged -= DtgLogMessagesSelectionChanged;

                // Convert the list to an array to fix
                // accessing it while the enumeration is changed.
                UpdateInternalList(messages.ToArray());
            }
            finally
            {
                dtgLogMessages.SelectionChanged += DtgLogMessagesSelectionChanged;
            }

            dtgLogMessages.Refresh();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Updates the visible <see cref="LogMessage"/>s.
        /// </summary>
        /// <param name="messages">The list of <see cref="LogMessage"/>s to display.</param>
        /// <param name="delta">The count of new <see cref="LogMessage"/>s.</param>
        public void LogMessagesChanged(List <LogMessage> messages, int delta)
        {
            if (InvokeRequired)
            {
                LogMessagesChangedDelegate updateDelegate = LogMessagesChanged;
                Invoke(updateDelegate, messages, delta);

                return;
            }

            try
            {
                tvLoggerTree.AfterSelect -= TvLoggerTreeAfterSelect;

                // We are only interessted in the delta, not all log messages.
                List <LogMessage> newLogMessages = delta < 0
          ? messages
          : messages.GetRange(messages.Count - delta, delta);

                foreach (LogMessage message in newLogMessages)
                {
                    PopulateTreeView(
                        tvLoggerTree
                        , Properties.Resources.strLoggerRoot
                        + tvLoggerTree.PathSeparator
                        + message.Logger);
                }
            }
            finally
            {
                tvLoggerTree.AfterSelect += TvLoggerTreeAfterSelect;
            }
        }