@@ -153,7 +153,7 @@ private static IEnumerable<RichTextBoxTarget> GetRichTextBoxTargets(LoggingConfi
153153 return loggingConfiguration . AllTargets . OfType < RichTextBoxTarget > ( ) ;
154154 }
155155
156- private static ReadOnlyCollection < RichTextBoxRowColoringRule > CreateDefaultColoringRules ( )
156+ private static List < RichTextBoxRowColoringRule > CreateDefaultColoringRules ( )
157157 {
158158 return new List < RichTextBoxRowColoringRule > ( )
159159 {
@@ -163,7 +163,7 @@ private static ReadOnlyCollection<RichTextBoxRowColoringRule> CreateDefaultColor
163163 new RichTextBoxRowColoringRule ( ) { Condition = "level == LogLevel.Info" , FontColor = "Black" } ,
164164 new RichTextBoxRowColoringRule ( ) { Condition = "level == LogLevel.Debug" , FontColor = "Gray" } ,
165165 new RichTextBoxRowColoringRule ( ) { Condition = "level == LogLevel.Trace" , FontColor = "DarkGray" , Style = FontStyle . Italic } ,
166- } . AsReadOnly ( ) ;
166+ } ;
167167 }
168168
169169 /// <summary>
@@ -209,7 +209,9 @@ public RichTextBoxTarget()
209209 /// <summary>
210210 /// Gets the default set of row coloring rules which applies when <see cref="UseDefaultRowColoringRules"/> is set to true.
211211 /// </summary>
212- public static ReadOnlyCollection < RichTextBoxRowColoringRule > DefaultRowColoringRules { get ; } = CreateDefaultColoringRules ( ) ;
212+ public static ReadOnlyCollection < RichTextBoxRowColoringRule > DefaultRowColoringRules => _defaultRowColoringRules ?? ( _defaultRowColoringRules = _defaultRowColoringRuleList . AsReadOnly ( ) ) ;
213+ private static ReadOnlyCollection < RichTextBoxRowColoringRule > ? _defaultRowColoringRules ;
214+ private static readonly List < RichTextBoxRowColoringRule > _defaultRowColoringRuleList = CreateDefaultColoringRules ( ) ;
213215
214216 /// <summary>
215217 /// Gets or sets the Name of RichTextBox to which Nlog will write.
@@ -235,14 +237,16 @@ public RichTextBoxTarget()
235237 /// </summary>
236238 /// <docgen category='Highlighting Options' order='10' />
237239 [ ArrayParameter ( typeof ( RichTextBoxRowColoringRule ) , "row-coloring" ) ]
238- public IList < RichTextBoxRowColoringRule > RowColoringRules { get ; } = new List < RichTextBoxRowColoringRule > ( ) ;
240+ public IList < RichTextBoxRowColoringRule > RowColoringRules => _rowColoringRules ;
241+ private readonly List < RichTextBoxRowColoringRule > _rowColoringRules = new List < RichTextBoxRowColoringRule > ( ) ;
239242
240243 /// <summary>
241244 /// Gets the word highlighting rules.
242245 /// </summary>
243246 /// <docgen category='Highlighting Options' order='10' />
244247 [ ArrayParameter ( typeof ( RichTextBoxWordColoringRule ) , "word-coloring" ) ]
245- public IList < RichTextBoxWordColoringRule > WordColoringRules { get ; } = new List < RichTextBoxWordColoringRule > ( ) ;
248+ public IList < RichTextBoxWordColoringRule > WordColoringRules => _wordColoringRules ;
249+ private readonly List < RichTextBoxWordColoringRule > _wordColoringRules = new List < RichTextBoxWordColoringRule > ( ) ;
246250
247251 /// <summary>
248252 /// Gets or sets a value indicating whether the created window will be a tool window.
@@ -911,9 +915,9 @@ private bool DoSendMessageToTextbox(string logMessage, RichTextBoxRowColoringRul
911915 private RichTextBoxRowColoringRule FindMatchingRule ( LogEventInfo logEvent )
912916 {
913917 //custom rules first
914- if ( RowColoringRules . Count > 0 )
918+ if ( _rowColoringRules . Count > 0 )
915919 {
916- foreach ( RichTextBoxRowColoringRule coloringRule in RowColoringRules )
920+ foreach ( RichTextBoxRowColoringRule coloringRule in _rowColoringRules )
917921 {
918922 if ( coloringRule . CheckCondition ( logEvent ) )
919923 {
@@ -922,9 +926,9 @@ private RichTextBoxRowColoringRule FindMatchingRule(LogEventInfo logEvent)
922926 }
923927 }
924928
925- if ( UseDefaultRowColoringRules && DefaultRowColoringRules != null )
929+ if ( UseDefaultRowColoringRules )
926930 {
927- foreach ( RichTextBoxRowColoringRule coloringRule in DefaultRowColoringRules )
931+ foreach ( RichTextBoxRowColoringRule coloringRule in _defaultRowColoringRuleList )
928932 {
929933 if ( coloringRule . CheckCondition ( logEvent ) )
930934 {
@@ -957,10 +961,10 @@ private void SendTheMessageToRichTextBox(RichTextBox textBox, string logMessage,
957961 textBox . AppendText ( logMessage + "\n " ) ;
958962 textBox . SelectionLength = textBox . TextLength - textBox . SelectionStart ;
959963
960- if ( WordColoringRules . Count > 0 )
964+ if ( _wordColoringRules . Count > 0 )
961965 {
962966 // find word to color
963- foreach ( RichTextBoxWordColoringRule wordRule in WordColoringRules )
967+ foreach ( RichTextBoxWordColoringRule wordRule in _wordColoringRules )
964968 {
965969 var wordRulePattern = wordRule . Regex ? . Render ( logEvent ) ?? string . Empty ;
966970 var wordRuleText = wordRule . Text ? . Render ( logEvent ) ?? string . Empty ;
0 commit comments