日志控件的进一步性能优化

之前我们在众多的库中选择了使用Log4Net进行日志的组件的存储。通过配置xml设定日志的存储路径，并通过配置AppenderSkeleton，实现了日志在写入文件的同时，可以展现在界面中。

针对在界面中的展示，我们实现了，读取软件启动时所有的历史日志，继续后续日志的插入功能，并实现了正序插入和倒序插入后刷新到最新行，以及搜索日志的功能。

接着我们这个窗口封装了一个控件，可以在其他的地方直接使用这个日志控件。

由于频繁刷新控件，可能会导致锁死的问题，我们改成使用Dispatcher.CheckAccess 并在其他线程中时，使用BeginInvoke ,插入队列解决了死锁的问题。

---

如果日志频繁插入，会造成性能越来越慢，插入越来越卡的情况，针对这个情况，我们要增加进一步优化实时显示的性能。

首先解决频繁刷新 UI，在日志量大时会导致 UI 卡顿甚至假死的问题。我们建立一个缓存日志，使用DispatcherTimer定时刷新到UI中。

其次TextBox控件的自动换行和关闭自动换行性能上存在差异，所以我们增加一个配置项，将控件的自动换行功能默认关闭。

性能越来越慢的问题，渲染内容越多，UI 响应越慢，所以我们增加一个配置项。可以按照字符数量限制同时显示的大小，在超出时，移除掉超出字符串。

最后优化一个体验问题，可以防止“自动下滚”打断用户查看历史内容，当用户拖动（或点击）TextBox的滚动条时，临时关闭AutoScrollToEnd，等用户停止操作（如松开鼠标后2秒）再恢复ScrollToEnd。

使用AI生成具体代码后，合入，性能测试有显著提升。

在短期内大量写入的情况，UI卡顿的幅度大幅降低。内存占用不在显著上涨。





