public void OnMessage(object sender, LogMessage msg) { lock (messageCollection) { while (messageCollection.Count > maxMessages - 1) { messageCollection.RemoveAt(0); } messageCollection.Add(msg); } bool display = false; switch (msg.LogType) { case LogType.Debug: if (cbDebug.Checked) display = true; break; case LogType.Info: if (cbInfo.Checked) display = true; break; case LogType.Warn: case LogType.Error: if (cbError.Checked) display = true; break; } if (display) { while (lstMessages.Items.Count > maxMessages - 1) { RemoveAtListItem(0); } AddListItem(msg); } }
private void AddListItem(LogMessage msg) { if (lstMessages.InvokeRequired) { AddListItemCallback cb = new AddListItemCallback(AddListItem); this.Invoke(cb, new object[] { msg }); } else { this.lstMessages.Items.Add(msg); } }
private void AddAllListItems(LogMessage[] msgs) { if (lstMessages.InvokeRequired) { AddAllListItemsCallback cb = new AddAllListItemsCallback(AddAllListItems); this.Invoke(cb, new object[] { msgs }); } else { this.lstMessages.BeginUpdate(); foreach (LogMessage msg in msgs) this.lstMessages.Items.Add(msg); lstMessages_ItemsChanged(null, null); this.lstMessages.EndUpdate(); } }